Exemplo n.º 1
0
def _GetDLLFileList(package: Package) -> List[str]:
    dllFiles = []
    deps = _BuildDLLDepsDict(package)
    for dependency in deps.values():
        if dependency.Location is not None:
            fullPathToFile = Util.ChangeToCMakeVariables(IOUtil.Join(dependency.Location, dependency.Name))
            srcFileCommand = fullPathToFile
            if dependency.DebugName != dependency.Name:
                fullPathToDebugFile = Util.ChangeToCMakeVariables(IOUtil.Join(dependency.Location, dependency.DebugName))
                srcFileCommand = "$<$<CONFIG:debug>:{0}>$<$<CONFIG:release>:{1}>".format(fullPathToDebugFile, srcFileCommand)
            dllFiles.append(srcFileCommand)
    return dllFiles
Exemplo n.º 2
0
def __TryTargetIncludeDirectoriesGetExternalDependencyString(config: Config, package: Package,
                                                             directExternalDeps: Union[PackageExternalDependency, PackagePlatformExternalDependency],
                                                             templatePackageTargetIncludeDirEntry: str,
                                                             templatePackageTargetIncludeDirVirtualEntry: str, pathType: int) -> Optional[str]:
    add = None # type: Optional[str]
    relativeCurrentIncDir = None # type: Optional[str]
    if directExternalDeps.Type != ExternalDependencyType.Find:
        currentIncDir = directExternalDeps.Include
        if currentIncDir is not None:
            if package.AbsolutePath is None:
                raise Exception("Invalid package")
            packageRootPath = config.ToPath(package.AbsolutePath)
            if currentIncDir.startswith(packageRootPath):
                relativeCurrentIncDir = currentIncDir[len(packageRootPath)+1:] if pathType == CMakePathType.LocalRelative else Util.ChangeToCMakeVariables(currentIncDir)
                add = "\n" + __GenerateDirEntryString(GetAccessTypeString(package, directExternalDeps.Access), relativeCurrentIncDir, templatePackageTargetIncludeDirEntry)
            else:
                currentTemplate = templatePackageTargetIncludeDirEntry
                relativeCurrentIncDir = config.TryToPath(currentIncDir)
                if relativeCurrentIncDir is None:
                    relativeCurrentIncDir = currentIncDir
                if pathType != CMakePathType.LocalRelative:
                    relativeCurrentIncDir = Util.ChangeToCMakeVariables(relativeCurrentIncDir)
                else:
                    relativeCurrentIncDir = Util.ChangeToCMakeEnvVariables(relativeCurrentIncDir)
                    currentTemplate = templatePackageTargetIncludeDirVirtualEntry

                add = "\n" + __GenerateDirEntryString(GetAccessTypeString(package, directExternalDeps.Access), relativeCurrentIncDir, currentTemplate)
    else:
        add = "\n  %s ${%s_INCLUDE_DIRS}" % (GetAccessTypeString(package, directExternalDeps.Access), directExternalDeps.Name)
    return add
def BuildTargetIncludeDirectories(
        config: Config,
        package: Package,
        templatePackageTargetIncludeDirectories: str,
        templatePackageTargetIncludeDirEntry: str,
        pathType: int = CMakePathType.Relative) -> str:
    isExternalLibrary = package.Type == PackageType.ExternalLibrary
    publicIncludeDir = ""
    if package.AbsoluteIncludePath:
        pubIncPath = __GetPackageIncludePath(config, package,
                                             package.AbsoluteIncludePath,
                                             pathType)
        accessString = "PUBLIC" if not package.IsVirtual else "INTERFACE"
        publicIncludeDir = "\n" + __GenerateDirEntryString(
            accessString, pubIncPath, templatePackageTargetIncludeDirEntry)
    privateIncludeDir = ""
    if package.AbsoluteSourcePath:
        priIncPath = __GetPackageIncludePath(config, package,
                                             package.AbsoluteSourcePath,
                                             pathType)
        accessString = "PRIVATE" if not package.IsVirtual else "INTERFACE"
        privateIncludeDir = "\n" + __GenerateDirEntryString(
            accessString, priIncPath, templatePackageTargetIncludeDirEntry)

    for directExternalDeps in package.ResolvedDirectExternalDependencies:
        if directExternalDeps.Type != ExternalDependencyType.Find:
            currentIncDir = directExternalDeps.Include
            if currentIncDir is not None:
                if package.AbsolutePath is None:
                    raise Exception("Invalid package")
                packageRootPath = config.ToPath(package.AbsolutePath)
                if currentIncDir.startswith(packageRootPath):
                    relativeCurrentIncDir = currentIncDir[
                        len(packageRootPath) +
                        1:] if pathType == CMakePathType.LocalRelative else Util.ChangeToCMakeVariables(
                            currentIncDir)
                    add = "\n" + __GenerateDirEntryString(
                        GetAccessTypeString(package,
                                            directExternalDeps.Access),
                        relativeCurrentIncDir,
                        templatePackageTargetIncludeDirEntry)
                else:
                    relativeCurrentIncDir = config.ToPath(currentIncDir)
                    if relativeCurrentIncDir is None:
                        add = "\n  {0} {1}".format(
                            GetAccessTypeString(package,
                                                directExternalDeps.Access),
                            Util.ChangeToCMakeEnvVariables(currentIncDir))
                    else:
                        if pathType != CMakePathType.LocalRelative:
                            relativeCurrentIncDir = Util.ChangeToCMakeVariables(
                                relativeCurrentIncDir)
                        add = "\n" + __GenerateDirEntryString(
                            GetAccessTypeString(package,
                                                directExternalDeps.Access),
                            relativeCurrentIncDir,
                            templatePackageTargetIncludeDirEntry)
                if directExternalDeps.Access == AccessType.Public:
                    publicIncludeDir += add
                else:
                    privateIncludeDir += add
        else:
            add = "\n  %s ${%s_INCLUDE_DIRS}" % (GetAccessTypeString(
                package, directExternalDeps.Access), directExternalDeps.Name)
            if directExternalDeps.Access == AccessType.Public:
                publicIncludeDir += add
            else:
                privateIncludeDir += add

    if len(publicIncludeDir) <= 0 and len(privateIncludeDir) <= 0:
        return ""

    content = templatePackageTargetIncludeDirectories
    content = content.replace("##PACKAGE_PUBLIC_INCLUDE_DIRECTORIES##",
                              publicIncludeDir)
    content = content.replace("##PACKAGE_PRIVATE_INCLUDE_DIRECTORIES##",
                              privateIncludeDir)
    return content
def GetSDKBasedPathUsingCMakeVariable(config: Config, path: str) -> str:
    return Util.ChangeToCMakeVariables(config.ToPath(path))