示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
                }
            }
        }
示例#3
0
        /// <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);
                }
            }
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
            }
        }
示例#6
0
        /// <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);
                }
            }
        }
示例#7
0
        /// <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);
            }
        }
示例#8
0
        /// <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);
                }
            }
        }