diff options
Diffstat (limited to 'Source/cmGlobalGenerator.h')
-rw-r--r-- | Source/cmGlobalGenerator.h | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 871178b..92e6a29 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -3,12 +3,13 @@ #ifndef cmGlobalGenerator_h #define cmGlobalGenerator_h -#include "cmConfigure.h" +#include "cmConfigure.h" // IWYU pragma: keep #include <iosfwd> #include <map> #include <set> #include <string> +#include <unordered_map> #include <utility> #include <vector> @@ -19,7 +20,6 @@ #include "cmTarget.h" #include "cmTargetDepend.h" #include "cm_codecvt.hxx" -#include "cm_unordered_map.hxx" #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmFileLockPool.h" @@ -32,6 +32,7 @@ class cmLinkLineComputer; class cmLocalGenerator; class cmMakefile; class cmOutputConverter; +class cmQtAutoGeneratorInitializer; class cmSourceFile; class cmStateDirectory; class cmake; @@ -69,6 +70,9 @@ public: /** Tell the generator about the target system. */ virtual bool SetSystemName(std::string const&, cmMakefile*) { return true; } + /** Set the generator-specific instance. Returns true if supported. */ + virtual bool SetGeneratorInstance(std::string const& i, cmMakefile* mf); + /** Set the generator-specific platform name. Returns true if platform is supported and false otherwise. */ virtual bool SetGeneratorPlatform(std::string const& p, cmMakefile* mf); @@ -161,6 +165,12 @@ public: std::vector<std::string> const& nativeOptions = std::vector<std::string>()); + /** + * Open a generated IDE project given the following information. + */ + virtual bool Open(const std::string& bindir, const std::string& projectName, + bool dryRun); + virtual void GenerateBuildCommand( std::vector<std::string>& makeCommand, const std::string& makeProgram, const std::string& projectName, const std::string& projectDir, @@ -187,9 +197,15 @@ public: return this->LocalGenerators; } - cmMakefile* GetCurrentMakefile() const { return this->CurrentMakefile; } + cmMakefile* GetCurrentMakefile() const + { + return this->CurrentConfigureMakefile; + } - void SetCurrentMakefile(cmMakefile* mf) { this->CurrentMakefile = mf; } + void SetCurrentMakefile(cmMakefile* mf) + { + this->CurrentConfigureMakefile = mf; + } void AddMakefile(cmMakefile* mf); @@ -289,15 +305,15 @@ public: virtual const char* GetAllTargetName() const { return "ALL_BUILD"; } virtual const char* GetInstallTargetName() const { return "INSTALL"; } - virtual const char* GetInstallLocalTargetName() const { return CM_NULLPTR; } - virtual const char* GetInstallStripTargetName() const { return CM_NULLPTR; } - virtual const char* GetPreinstallTargetName() const { return CM_NULLPTR; } + virtual const char* GetInstallLocalTargetName() const { return nullptr; } + virtual const char* GetInstallStripTargetName() const { return nullptr; } + virtual const char* GetPreinstallTargetName() const { return nullptr; } virtual const char* GetTestTargetName() const { return "RUN_TESTS"; } virtual const char* GetPackageTargetName() const { return "PACKAGE"; } - virtual const char* GetPackageSourceTargetName() const { return CM_NULLPTR; } - virtual const char* GetEditCacheTargetName() const { return CM_NULLPTR; } - virtual const char* GetRebuildCacheTargetName() const { return CM_NULLPTR; } - virtual const char* GetCleanTargetName() const { return CM_NULLPTR; } + virtual const char* GetPackageSourceTargetName() const { return nullptr; } + virtual const char* GetEditCacheTargetName() const { return nullptr; } + virtual const char* GetRebuildCacheTargetName() const { return nullptr; } + virtual const char* GetCleanTargetName() const { return nullptr; } // Lookup edit_cache target command preferred by this generator. virtual std::string GetEditCacheCommand() const { return ""; } @@ -310,7 +326,7 @@ public: TargetDependSet const& GetTargetDirectDepends( const cmGeneratorTarget* target); - const std::map<std::string, std::vector<cmLocalGenerator*> >& GetProjectMap() + const std::map<std::string, std::vector<cmLocalGenerator*>>& GetProjectMap() const { return this->ProjectMap; @@ -342,6 +358,10 @@ public: virtual bool IsIPOSupported() const { return false; } + /** Return whether the generator can import external visual studio project + using INCLUDE_EXTERNAL_MSPROJECT */ + virtual bool IsIncludeExternalMSProjectSupported() const { return false; } + /** Return whether the generator should use EFFECTIVE_PLATFORM_NAME. This is relevant for mixed macOS and iOS builds. */ virtual bool UseEffectivePlatformName(cmMakefile*) const { return false; } @@ -416,7 +436,9 @@ protected: virtual bool CheckALLOW_DUPLICATE_CUSTOM_TARGETS() const; - std::vector<const cmGeneratorTarget*> CreateQtAutoGeneratorsTargets(); + // Qt auto generators + std::vector<std::unique_ptr<cmQtAutoGeneratorInitializer>> + CreateQtAutoGenInitializers(); std::string SelectMakeProgram(const std::string& makeProgram, const std::string& makeDefault = "") const; @@ -460,9 +482,9 @@ protected: cmake* CMakeInstance; std::vector<cmMakefile*> Makefiles; std::vector<cmLocalGenerator*> LocalGenerators; - cmMakefile* CurrentMakefile; + cmMakefile* CurrentConfigureMakefile; // map from project name to vector of local generators in that project - std::map<std::string, std::vector<cmLocalGenerator*> > ProjectMap; + std::map<std::string, std::vector<cmLocalGenerator*>> ProjectMap; // Set of named installation components requested by the project. std::set<std::string> InstallComponents; @@ -482,9 +504,10 @@ protected: const char* GetPredefinedTargetsFolder(); private: - typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap; - typedef CM_UNORDERED_MAP<std::string, cmGeneratorTarget*> GeneratorTargetMap; - typedef CM_UNORDERED_MAP<std::string, cmMakefile*> MakefileMap; + typedef std::unordered_map<std::string, cmTarget*> TargetMap; + typedef std::unordered_map<std::string, cmGeneratorTarget*> + GeneratorTargetMap; + typedef std::unordered_map<std::string, cmMakefile*> MakefileMap; // Map efficiently from target name to cmTarget instance. // Do not use this structure for looping over all targets. // It contains both normal and globally visible imported targets. @@ -524,6 +547,8 @@ private: virtual void ForceLinkerLanguages(); + bool CheckTargetsForMissingSources() const; + void CreateLocalGenerators(); void CheckCompilerIdCompatibility(cmMakefile* mf, @@ -548,9 +573,12 @@ private: void ClearGeneratorMembers(); + bool CheckCMP0037(std::string const& targetName, + std::string const& reason) const; + void IndexMakefile(cmMakefile* mf); - virtual const char* GetBuildIgnoreErrorsFlag() const { return CM_NULLPTR; } + virtual const char* GetBuildIgnoreErrorsFlag() const { return nullptr; } // Cache directory content and target files to be built. struct DirectoryContent @@ -573,7 +601,7 @@ private: // track targets to issue CMP0068 warning for. std::set<std::string> CMP0068WarnTargets; - mutable std::map<cmSourceFile*, std::set<cmGeneratorTarget const*> > + mutable std::map<cmSourceFile*, std::set<cmGeneratorTarget const*>> FilenameTargetDepends; #if defined(CMAKE_BUILD_WITH_CMAKE) |