/// <summary> /// We find the collection of object files used by any libraries /// that this project depends on. /// </summary> private void findImplicitlyLinkedObjectFiles(List <ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo_CPP requiredProject in getRequiredProjects()) { // Is the required project a static library? if (requiredProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY) { continue; } // We've found a library, so we add its object files to our collection... foreach (ProjectConfigurationInfo_CPP configuration in requiredProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.ConfigurationName = configuration.Name; info.IntermediateFolderAbsolute = configuration.IntermediateFolderAbsolute; foreach (string file in requiredProject.getFiles()) { string objectFile = Path.ChangeExtension(file, ".o"); info.ObjectFileNames.Add(objectFile); } infos.Add(info); } // We find object files in any libraries this project depends on... requiredProject.findImplicitlyLinkedObjectFiles(infos); } }
/// <summary> /// Finds extra libraries that this executable project needs to link /// as the result of dependencies. /// </summary> private void findImplicitlyLinkedLibraries(List <ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo_CPP requiredProject in getRequiredProjects()) { // Is the required project a static library? if (requiredProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY && requiredProject.ProjectType != ProjectTypeEnum.CPP_DLL) { continue; } // We've found a library, so we add it to our collection // of items to link in... foreach (ProjectConfigurationInfo_CPP configuration in requiredProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.LibraryRawName = requiredProject.Name; info.ConfigurationName = configuration.Name; info.OutputFolderAbsolute = configuration.OutputFolderAbsolute; infos.Add(info); } // As long as this library is *not* set to link its own // dependencies, we recurse into it to see if it has any // library dependencies of its own... if (requiredProject.LinkLibraryDependencies == false) { requiredProject.findImplicitlyLinkedLibraries(infos); } } }
/// <summary> /// Finds extra libraries that this executable project needs to link /// as the result of dependencies. /// </summary> private void findImplicitlyLinkedLibraries(List <ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo requiredProject in getRequiredProjects()) { // C++/CLI projects can depend on managed projects -- check for that var requiredCppProject = requiredProject as ProjectInfo_CPP; if (requiredCppProject == null) { Log.log(string.Format("Warning: C++ project {0} requires non-C++ project {1} -- unsupported, skipping.", Name, requiredProject.Name)); continue; } // Is the required project a static library? if (requiredCppProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY && requiredCppProject.ProjectType != ProjectTypeEnum.CPP_DLL) { continue; } // We've found a library, so we add it to our collection // of items to link in... foreach (ProjectConfigurationInfo_CPP configuration in requiredCppProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.LibraryRawName = requiredCppProject.Name; info.ConfigurationName = configuration.Name; info.OutputFolderAbsolute = configuration.OutputFolderAbsolute; infos.Add(info); } // As long as this library is *not* set to link its own // dependencies, we recurse into it to see if it has any // library dependencies of its own... if (requiredCppProject.LinkLibraryDependencies == false) { requiredCppProject.findImplicitlyLinkedLibraries(infos); } } }
/// <summary> /// We find the collection of object files used by any libraries /// that this project depends on. /// </summary> private void findImplicitlyLinkedObjectFiles(List <ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo requiredProject in getRequiredProjects()) { // C++/CLI projects can depend on managed projects -- check for that var requiredCppProject = requiredProject as ProjectInfo_CPP; if (requiredCppProject == null) { Log.log(string.Format("Warning: C++ project {0} requires non-C++ project {1} -- unsupported, skipping.", Name, requiredProject.Name)); continue; } // Is the required project a static library? if (requiredCppProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY) { continue; } // We've found a library, so we add its object files to our collection... foreach (ProjectConfigurationInfo_CPP configuration in requiredCppProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.ConfigurationName = configuration.Name; info.IntermediateFolderAbsolute = configuration.IntermediateFolderAbsolute; foreach (string file in requiredCppProject.getFiles()) { string objectFile = Path.ChangeExtension(file, ".o"); info.ObjectFileNames.Add(objectFile); } infos.Add(info); } // We find object files in any libraries this project depends on... requiredCppProject.findImplicitlyLinkedObjectFiles(infos); } }
/// <summary> /// We find the collection of object files used by any libraries /// that this project depends on. /// </summary> private void findImplicitlyLinkedObjectFiles(List<ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo_CPP requiredProject in getRequiredProjects()) { // Is the required project a static library? if (requiredProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY) { continue; } // We've found a library, so we add its object files to our collection... foreach (ProjectConfigurationInfo_CPP configuration in requiredProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.ConfigurationName = configuration.Name; info.IntermediateFolderAbsolute = configuration.IntermediateFolderAbsolute; foreach (string file in requiredProject.getFiles()) { string objectFile = Path.ChangeExtension(file, ".o"); info.ObjectFileNames.Add(objectFile); } infos.Add(info); } // We find object files in any libraries this project depends on... requiredProject.findImplicitlyLinkedObjectFiles(infos); } }
/// <summary> /// Finds extra libraries that this executable project needs to link /// as the result of dependencies. /// </summary> private void findImplicitlyLinkedLibraries(List<ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo_CPP requiredProject in getRequiredProjects()) { // Is the required project a static library? if (requiredProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY && requiredProject.ProjectType != ProjectTypeEnum.CPP_DLL) { continue; } // We've found a library, so we add it to our collection // of items to link in... foreach (ProjectConfigurationInfo_CPP configuration in requiredProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.LibraryRawName = requiredProject.Name; info.ConfigurationName = configuration.Name; info.OutputFolderAbsolute = configuration.OutputFolderAbsolute; infos.Add(info); } // As long as this library is *not* set to link its own // dependencies, we recurse into it to see if it has any // library dependencies of its own... if (requiredProject.LinkLibraryDependencies == false) { requiredProject.findImplicitlyLinkedLibraries(infos); } } }
/// <summary> /// We find the collection of object files used by any libraries /// that this project depends on. /// </summary> private void findImplicitlyLinkedObjectFiles(List<ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo requiredProject in getRequiredProjects()) { // C++/CLI projects can depend on managed projects -- check for that var requiredCppProject = requiredProject as ProjectInfo_CPP; if (requiredCppProject == null) { Log.log(string.Format("Warning: C++ project {0} requires non-C++ project {1} -- unsupported, skipping.", Name, requiredProject.Name)); continue; } // Is the required project a static library? if (requiredCppProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY) { continue; } // We've found a library, so we add its object files to our collection... foreach (ProjectConfigurationInfo_CPP configuration in requiredCppProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.ConfigurationName = configuration.Name; info.IntermediateFolderAbsolute = configuration.IntermediateFolderAbsolute; foreach (string file in requiredCppProject.getFiles()) { string objectFile = Path.ChangeExtension(file, ".o"); info.ObjectFileNames.Add(objectFile); } infos.Add(info); } // We find object files in any libraries this project depends on... requiredCppProject.findImplicitlyLinkedObjectFiles(infos); } }
/// <summary> /// Finds extra libraries that this executable project needs to link /// as the result of dependencies. /// </summary> private void findImplicitlyLinkedLibraries(List<ImplicitLinkInfo> infos) { // We loop through the projects that this project depends on... foreach (ProjectInfo requiredProject in getRequiredProjects()) { // C++/CLI projects can depend on managed projects -- check for that var requiredCppProject = requiredProject as ProjectInfo_CPP; if (requiredCppProject == null) { Log.log(string.Format("Warning: C++ project {0} requires non-C++ project {1} -- unsupported, skipping.", Name, requiredProject.Name)); continue; } // Is the required project a static library? if (requiredCppProject.ProjectType != ProjectTypeEnum.CPP_STATIC_LIBRARY && requiredCppProject.ProjectType != ProjectTypeEnum.CPP_DLL) { continue; } // We've found a library, so we add it to our collection // of items to link in... foreach (ProjectConfigurationInfo_CPP configuration in requiredCppProject.getConfigurationInfos()) { ImplicitLinkInfo info = new ImplicitLinkInfo(); info.LibraryRawName = requiredCppProject.Name; info.ConfigurationName = configuration.Name; info.OutputFolderAbsolute = configuration.OutputFolderAbsolute; infos.Add(info); } // As long as this library is *not* set to link its own // dependencies, we recurse into it to see if it has any // library dependencies of its own... if (requiredCppProject.LinkLibraryDependencies == false) { requiredCppProject.findImplicitlyLinkedLibraries(infos); } } }