cmMakefile: Add helper to initialize CMAKE_CONFIGURATION_TYPES
Factor out duplicate code from the Ninja Multi-Config, Visual Studio, and Xcode generators.
This commit is contained in:
parent
88fade3914
commit
03bd9c4c10
@ -920,14 +920,7 @@ void cmGlobalNinjaGenerator::EnableLanguage(
|
||||
std::vector<std::string> const& langs, cmMakefile* mf, bool optional)
|
||||
{
|
||||
if (this->IsMultiConfig()) {
|
||||
if (!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
|
||||
mf->AddCacheDefinition(
|
||||
"CMAKE_CONFIGURATION_TYPES", "Debug;Release;RelWithDebInfo",
|
||||
"Semicolon separated list of supported configuration types, only "
|
||||
"supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything "
|
||||
"else will be ignored",
|
||||
cmStateEnums::STRING);
|
||||
}
|
||||
mf->InitCMAKE_CONFIGURATION_TYPES("Debug;Release;RelWithDebInfo");
|
||||
}
|
||||
|
||||
this->cmGlobalGenerator::EnableLanguage(langs, mf, optional);
|
||||
|
@ -107,14 +107,7 @@ void cmGlobalVisualStudio7Generator::EnableLanguage(
|
||||
{
|
||||
mf->AddDefinition("CMAKE_GENERATOR_RC", "rc");
|
||||
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
|
||||
if (!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
|
||||
mf->AddCacheDefinition(
|
||||
"CMAKE_CONFIGURATION_TYPES", "Debug;Release;MinSizeRel;RelWithDebInfo",
|
||||
"Semicolon separated list of supported configuration types, "
|
||||
"only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
|
||||
"anything else will be ignored.",
|
||||
cmStateEnums::STRING);
|
||||
}
|
||||
mf->InitCMAKE_CONFIGURATION_TYPES("Debug;Release;MinSizeRel;RelWithDebInfo");
|
||||
|
||||
// Create list of configurations requested by user's cache, if any.
|
||||
this->cmGlobalVisualStudioGenerator::EnableLanguage(lang, mf, optional);
|
||||
|
@ -431,14 +431,7 @@ void cmGlobalXCodeGenerator::EnableLanguage(
|
||||
{
|
||||
mf->AddDefinition("XCODE", "1");
|
||||
mf->AddDefinition("XCODE_VERSION", this->VersionString);
|
||||
if (!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
|
||||
mf->AddCacheDefinition(
|
||||
"CMAKE_CONFIGURATION_TYPES", "Debug;Release;MinSizeRel;RelWithDebInfo",
|
||||
"Semicolon separated list of supported configuration types, "
|
||||
"only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
|
||||
"anything else will be ignored.",
|
||||
cmStateEnums::STRING);
|
||||
}
|
||||
mf->InitCMAKE_CONFIGURATION_TYPES("Debug;Release;MinSizeRel;RelWithDebInfo");
|
||||
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
|
||||
this->cmGlobalGenerator::EnableLanguage(lang, mf, optional);
|
||||
this->ComputeArchitectures(mf);
|
||||
|
@ -3182,6 +3182,19 @@ void cmMakefile::RemoveVariablesInString(std::string& source,
|
||||
}
|
||||
}
|
||||
|
||||
void cmMakefile::InitCMAKE_CONFIGURATION_TYPES(std::string const& genDefault)
|
||||
{
|
||||
if (this->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
|
||||
return;
|
||||
}
|
||||
this->AddCacheDefinition(
|
||||
"CMAKE_CONFIGURATION_TYPES", genDefault,
|
||||
"Semicolon separated list of supported configuration types, "
|
||||
"only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
|
||||
"anything else will be ignored.",
|
||||
cmStateEnums::STRING);
|
||||
}
|
||||
|
||||
std::string cmMakefile::GetDefaultConfiguration() const
|
||||
{
|
||||
if (this->GetGlobalGenerator()->IsMultiConfig()) {
|
||||
|
@ -310,6 +310,8 @@ public:
|
||||
*/
|
||||
void SetProjectName(std::string const& name);
|
||||
|
||||
void InitCMAKE_CONFIGURATION_TYPES(std::string const& genDefault);
|
||||
|
||||
/* Get the default configuration */
|
||||
std::string GetDefaultConfiguration() const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user