/// <summary>
        /// Creates all the modules required for this target
        /// </summary>
        public void RecursivelyCreateModules(CreateModuleDelegate CreateModule)
        {
            // Create all the include path modules. These modules may not be added to the target (and we don't process their dependencies), but they need
            // to be created to set up their compile environment.
            RecursivelyCreateIncludePathModulesByName(Rules.PublicIncludePathModuleNames, ref PublicIncludePathModules, CreateModule);
            RecursivelyCreateIncludePathModulesByName(Rules.PrivateIncludePathModuleNames, ref PrivateIncludePathModules, CreateModule);

            // Create all the dependency modules
            RecursivelyCreateModulesByName(Rules.PublicDependencyModuleNames, ref PublicDependencyModules, CreateModule);
            RecursivelyCreateModulesByName(Rules.PrivateDependencyModuleNames, ref PrivateDependencyModules, CreateModule);
            RecursivelyCreateModulesByName(Rules.DynamicallyLoadedModuleNames, ref DynamicallyLoadedModules, CreateModule);
            RecursivelyCreateModulesByName(Rules.PlatformSpecificDynamicallyLoadedModuleNames, ref PlatformSpecificDynamicallyLoadedModules, CreateModule);
        }
Example #2
0
        /// <summary>
        /// Creates all the modules required for this target
        /// </summary>
        /// <param name="CreateModule">Delegate to create a module with a given name</param>
        /// <param name="ReferenceChain">Chain of references before reaching this module</param>
        public void RecursivelyCreateModules(CreateModuleDelegate CreateModule, string ReferenceChain)
        {
            // Get the reference chain for anything referenced by this module
            string NextReferenceChain = String.Format("{0} -> {1}", ReferenceChain, (RulesFile == null)? Name : RulesFile.GetFileName());

            // Recursively create all the public include path modules. These modules may not be added to the target (and we don't process their referenced
            // dependencies), but they need to be created to set up their include paths.
            RecursivelyCreateIncludePathModulesByName(Rules.PublicIncludePathModuleNames, ref PublicIncludePathModules, CreateModule, NextReferenceChain);

            // Create all the referenced modules. This path can be recursive, so we check against PrivateIncludePathModules to ensure we don't recurse through the
            // same module twice (it produces better errors if something fails).
            if (PrivateIncludePathModules == null)
            {
                // Create the private include path modules
                RecursivelyCreateIncludePathModulesByName(Rules.PrivateIncludePathModuleNames, ref PrivateIncludePathModules, CreateModule, NextReferenceChain);

                // Create all the dependency modules
                RecursivelyCreateModulesByName(Rules.PublicDependencyModuleNames, ref PublicDependencyModules, CreateModule, NextReferenceChain);
                RecursivelyCreateModulesByName(Rules.PrivateDependencyModuleNames, ref PrivateDependencyModules, CreateModule, NextReferenceChain);
                RecursivelyCreateModulesByName(Rules.DynamicallyLoadedModuleNames, ref DynamicallyLoadedModules, CreateModule, NextReferenceChain);
            }
        }
Example #3
0
 private static void RecursivelyCreateIncludePathModulesByName(List <string> ModuleNames, ref List <UEBuildModule> Modules, CreateModuleDelegate CreateModule, string ReferenceChain)
 {
     // Check whether the module list is already set. We set this immediately (via the ref) to avoid infinite recursion.
     if (Modules == null)
     {
         Modules = new List <UEBuildModule>();
         foreach (string ModuleName in ModuleNames)
         {
             UEBuildModule Module = CreateModule(ModuleName, ReferenceChain);
             RecursivelyCreateIncludePathModulesByName(Module.Rules.PublicIncludePathModuleNames, ref Module.PublicIncludePathModules, CreateModule, ReferenceChain);
             Modules.Add(Module);
         }
     }
 }
 private static void RecursivelyCreateModulesByName(List <string> ModuleNames, ref List <UEBuildModule> Modules, CreateModuleDelegate CreateModule)
 {
     // Check whether the module list is already set. We set this immediately (via the ref) to avoid infinite recursion.
     if (Modules == null)
     {
         Modules = new List <UEBuildModule>();
         foreach (string ModuleName in ModuleNames)
         {
             UEBuildModule Module = CreateModule(ModuleName);
             if (!Modules.Contains(Module))
             {
                 Module.RecursivelyCreateModules(CreateModule);
                 Modules.Add(Module);
             }
         }
     }
 }