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
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))