diff options
author | Brad King <brad.king@kitware.com> | 2013-11-13 20:59:32 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-11-14 21:25:31 (GMT) |
commit | 05923172f94d804dfba33957aa08ac88cc5cd0bd (patch) | |
tree | 5f394cf0dba177cad5905a01dfaee476d00278af /Source | |
parent | 1befbfad3d9971335ab0e7deb1a93acfdccf0fb6 (diff) | |
download | CMake-05923172f94d804dfba33957aa08ac88cc5cd0bd.zip CMake-05923172f94d804dfba33957aa08ac88cc5cd0bd.tar.gz CMake-05923172f94d804dfba33957aa08ac88cc5cd0bd.tar.bz2 |
cmGlobalGenerator: Add method to compute "cmake --build" command line
Create a GenerateCMakeBuildCommand method to generate a command-line
string invoking "cmake --build" for a given target and configuration.
Optionally allow the "-i" make flag and additional native options.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 40 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 7 | ||||
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.h | 1 |
3 files changed, 48 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 335bf5a..531e1ca 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1707,6 +1707,46 @@ int cmGlobalGenerator::Build( return retVal; } +//---------------------------------------------------------------------------- +std::string cmGlobalGenerator::GenerateCMakeBuildCommand( + const char* target, const char* config, const char* native, + bool ignoreErrors) +{ + std::string makeCommand = cmSystemTools::GetCMakeCommand(); + makeCommand = cmSystemTools::ConvertToOutputPath(makeCommand.c_str()); + makeCommand += " --build ."; + if(config && *config) + { + makeCommand += " --config \""; + makeCommand += config; + makeCommand += "\""; + } + if(target && *target) + { + makeCommand += " --target \""; + makeCommand += target; + makeCommand += "\""; + } + const char* sep = " -- "; + if(ignoreErrors) + { + const char* iflag = this->GetBuildIgnoreErrorsFlag(); + if(iflag && *iflag) + { + makeCommand += sep; + makeCommand += iflag; + sep = " "; + } + } + if(native && *native) + { + makeCommand += sep; + makeCommand += native; + } + return makeCommand; +} + +//---------------------------------------------------------------------------- void cmGlobalGenerator::AddLocalGenerator(cmLocalGenerator *lg) { this->LocalGenerators.push_back(lg); diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 2761158..82ffd64 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -134,6 +134,11 @@ public: const char *targetName, const char* config, bool ignoreErrors, bool fast); + /** Generate a "cmake --build" call for a given target and config. */ + std::string GenerateCMakeBuildCommand(const char* target, + const char* config, + const char* native, + bool ignoreErrors); ///! Set the CMake instance void SetCMakeInstance(cmake *cm); @@ -422,6 +427,8 @@ private: void ClearGeneratorMembers(); + virtual const char* GetBuildIgnoreErrorsFlag() const { return 0; } + // Cache directory content and target files to be built. struct DirectoryContent: public std::set<cmStdString> { diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 608f643..322736f 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -188,6 +188,7 @@ protected: cmGeneratedFileStream *CommandDatabase; private: + virtual const char* GetBuildIgnoreErrorsFlag() const { return "-i"; } virtual std::string GetEditCacheCommand() const; virtual void ComputeTargetObjects(cmGeneratorTarget* gt) const; }; |