/// <summary> /// Gets all build products produced by this binary /// </summary> /// <param name="Target">The target being built</param> /// <param name="ToolChain">The platform toolchain</param> /// <param name="BuildProducts">Mapping of produced build product to type</param> /// <param name="bCreateDebugInfo">Whether debug info is enabled for this binary</param> public void GetBuildProducts(ReadOnlyTargetRules Target, UEToolChain ToolChain, Dictionary <FileReference, BuildProductType> BuildProducts, bool bCreateDebugInfo) { // Get the type of build products we're creating BuildProductType Type = BuildProductType.RequiredResource; switch (Config.Type) { case UEBuildBinaryType.Executable: Type = BuildProductType.Executable; break; case UEBuildBinaryType.DynamicLinkLibrary: Type = BuildProductType.DynamicLibrary; break; case UEBuildBinaryType.StaticLibrary: Type = BuildProductType.StaticLibrary; break; } // Add the primary build products string DebugExtension = UEBuildPlatform.GetBuildPlatform(Target.Platform).GetDebugInfoExtension(Target, Config.Type); foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(OutputFilePath, Type, DebugExtension, BuildProducts, ToolChain, bCreateDebugInfo); } // Add the console app, if there is one if (Config.Type == UEBuildBinaryType.Executable && Config.bBuildAdditionalConsoleApp) { foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(GetAdditionalConsoleAppPath(OutputFilePath), Type, DebugExtension, BuildProducts, ToolChain, bCreateDebugInfo); } } // Add any additional build products from the modules in this binary, including additional bundle resources/dylibs on Mac. List <string> Libraries = new List <string>(); List <UEBuildBundleResource> BundleResources = new List <UEBuildBundleResource>(); GatherAdditionalResources(Libraries, BundleResources); // Add any extra files from the toolchain ToolChain.ModifyBuildProducts(Target, this, Libraries, BundleResources, BuildProducts); }
/// <summary> /// Gets all build products produced by this binary /// </summary> /// <param name="ToolChain">The platform toolchain</param> /// <param name="BuildProducts">Mapping of produced build product to type</param> public virtual void GetBuildProducts(UEToolChain ToolChain, Dictionary <FileReference, BuildProductType> BuildProducts) { // Get the type of build products we're creating BuildProductType Type = BuildProductType.RequiredResource; switch (Config.Type) { case UEBuildBinaryType.Executable: Type = BuildProductType.Executable; break; case UEBuildBinaryType.DynamicLinkLibrary: Type = BuildProductType.DynamicLibrary; break; case UEBuildBinaryType.StaticLibrary: Type = BuildProductType.StaticLibrary; break; } // Add the primary build products string DebugExtension = UEBuildPlatform.GetBuildPlatform(Target.Platform).GetDebugInfoExtension(Config.Type); foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(OutputFilePath, Type, DebugExtension, BuildProducts, ToolChain); } // Add the console app, if there is one if (Config.Type == UEBuildBinaryType.Executable && Config.bBuildAdditionalConsoleApp) { foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(GetAdditionalConsoleAppPath(OutputFilePath), Type, DebugExtension, BuildProducts, ToolChain); } } // Add any extra files from the toolchain ToolChain.ModifyBuildProducts(this, BuildProducts); }
/// <summary> /// Gets all build products produced by this binary /// </summary> /// <param name="Target">The target being built</param> /// <param name="ToolChain">The platform toolchain</param> /// <param name="BuildProducts">Mapping of produced build product to type</param> /// <param name="bCreateDebugInfo">Whether debug info is enabled for this binary</param> public void GetBuildProducts(ReadOnlyTargetRules Target, UEToolChain ToolChain, Dictionary <FileReference, BuildProductType> BuildProducts, bool bCreateDebugInfo) { // Add all the precompiled outputs foreach (UEBuildModuleCPP Module in Modules.OfType <UEBuildModuleCPP>()) { if (Module.Rules.bPrecompile) { if (Module.GeneratedCodeDirectory != null && DirectoryReference.Exists(Module.GeneratedCodeDirectory)) { foreach (FileReference GeneratedCodeFile in DirectoryReference.EnumerateFiles(Module.GeneratedCodeDirectory)) { // Exclude timestamp files, since they're always updated and cause collisions between builds if (!GeneratedCodeFile.GetFileName().Equals("Timestamp", StringComparison.OrdinalIgnoreCase) && !GeneratedCodeFile.HasExtension(".cpp")) { BuildProducts.Add(GeneratedCodeFile, BuildProductType.BuildResource); } } } if (Target.LinkType == TargetLinkType.Monolithic) { FileReference PrecompiledManifestLocation = Module.PrecompiledManifestLocation; BuildProducts.Add(PrecompiledManifestLocation, BuildProductType.BuildResource); PrecompiledManifest ModuleManifest = PrecompiledManifest.Read(PrecompiledManifestLocation); foreach (FileReference OutputFile in ModuleManifest.OutputFiles) { if (!BuildProducts.ContainsKey(OutputFile)) { BuildProducts.Add(OutputFile, BuildProductType.BuildResource); } } } } } // Add all the binary outputs if (!Target.bDisableLinking) { // Get the type of build products we're creating BuildProductType OutputType = BuildProductType.RequiredResource; switch (Type) { case UEBuildBinaryType.Executable: OutputType = BuildProductType.Executable; break; case UEBuildBinaryType.DynamicLinkLibrary: OutputType = BuildProductType.DynamicLibrary; break; case UEBuildBinaryType.StaticLibrary: OutputType = BuildProductType.BuildResource; break; } // Add the primary build products string[] DebugExtensions = UEBuildPlatform.GetBuildPlatform(Target.Platform).GetDebugInfoExtensions(Target, Type); foreach (FileReference OutputFilePath in OutputFilePaths) { AddBuildProductAndDebugFiles(OutputFilePath, OutputType, DebugExtensions, BuildProducts, ToolChain, bCreateDebugInfo); } // Add the console app, if there is one if (Type == UEBuildBinaryType.Executable && bBuildAdditionalConsoleApp) { foreach (FileReference OutputFilePath in OutputFilePaths) { AddBuildProductAndDebugFiles(GetAdditionalConsoleAppPath(OutputFilePath), OutputType, DebugExtensions, BuildProducts, ToolChain, bCreateDebugInfo); } } // Add any additional build products from the modules in this binary, including additional bundle resources/dylibs on Mac. List <string> Libraries = new List <string>(); List <UEBuildBundleResource> BundleResources = new List <UEBuildBundleResource>(); GatherAdditionalResources(Libraries, BundleResources); // Add any extra files from the toolchain ToolChain.ModifyBuildProducts(Target, this, Libraries, BundleResources, BuildProducts); } }
/// <summary> /// Gets all build products produced by this binary /// </summary> /// <param name="ToolChain">The platform toolchain</param> /// <param name="BuildProducts">Mapping of produced build product to type</param> public virtual void GetBuildProducts(UEToolChain ToolChain, Dictionary<FileReference, BuildProductType> BuildProducts) { // Get the type of build products we're creating BuildProductType Type = BuildProductType.RequiredResource; switch (Config.Type) { case UEBuildBinaryType.Executable: Type = BuildProductType.Executable; break; case UEBuildBinaryType.DynamicLinkLibrary: Type = BuildProductType.DynamicLibrary; break; case UEBuildBinaryType.StaticLibrary: Type = BuildProductType.StaticLibrary; break; } // Add the primary build products string DebugExtension = UEBuildPlatform.GetBuildPlatform(Target.Platform).GetDebugInfoExtension(Config.Type); foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(OutputFilePath, Type, DebugExtension, BuildProducts, ToolChain); } // Add the console app, if there is one if (Config.Type == UEBuildBinaryType.Executable && Config.bBuildAdditionalConsoleApp) { foreach (FileReference OutputFilePath in Config.OutputFilePaths) { AddBuildProductAndDebugFile(GetAdditionalConsoleAppPath(OutputFilePath), Type, DebugExtension, BuildProducts, ToolChain); } } // Add any extra files from the toolchain ToolChain.ModifyBuildProducts(this, BuildProducts); }