Add GENERATOR_IS_MULTI_CONFIG global property

Fixes: #16768
This commit is contained in:
Bastien Schatt 2017-04-03 18:47:32 +02:00 committed by Brad King
parent 53e9c2d2a3
commit 38fd5866c0
8 changed files with 38 additions and 0 deletions

View File

@ -31,6 +31,7 @@ Properties of Global Scope
/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS
/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS
/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING
/prop_gbl/GENERATOR_IS_MULTI_CONFIG
/prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE
/prop_gbl/GLOBAL_DEPENDS_NO_CYCLES
/prop_gbl/IN_TRY_COMPILE

View File

@ -0,0 +1,9 @@
GENERATOR_IS_MULTI_CONFIG
-------------------------
Read-only property that is true on multi-configuration generators.
True when using a multi-configuration generator
(such as :ref:`Visual Studio Generators` or :generator:`Xcode`).
Multi-config generators use :variable:`CMAKE_CONFIGURATION_TYPES`
as the set of configurations and ignore :variable:`CMAKE_BUILD_TYPE`.

View File

@ -0,0 +1,6 @@
prop-is-multi-config
--------------------
* A :prop_gbl:`GENERATOR_IS_MULTI_CONFIG` global property was
added to determine whether the current generator is a multi-configuration
generator (such as :ref:`Visual Studio Generators` or :generator:`Xcode`).

View File

@ -96,6 +96,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm)
this->ConfigureDoneCMP0026AndCMP0024 = false;
this->FirstTimeProgress = 0.0f;
cm->GetState()->SetIsGeneratorMultiConfig(false);
cm->GetState()->SetMinGWMake(false);
cm->GetState()->SetMSYSShell(false);
cm->GetState()->SetNMake(false);

View File

@ -20,6 +20,7 @@
cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator(cmake* cm)
: cmGlobalGenerator(cm)
{
cm->GetState()->SetIsGeneratorMultiConfig(true);
cm->GetState()->SetWindowsShell(true);
cm->GetState()->SetWindowsVSIDE(true);
}

View File

@ -151,6 +151,8 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm,
this->CurrentMakefile = 0;
this->CurrentLocalGenerator = 0;
this->XcodeBuildCommandInitialized = false;
cm->GetState()->SetIsGeneratorMultiConfig(true);
}
cmGlobalGeneratorFactory* cmGlobalXCodeGenerator::NewFactory()

View File

@ -20,6 +20,7 @@
cmState::cmState()
: IsInTryCompile(false)
, IsGeneratorMultiConfig(false)
, WindowsShell(false)
, WindowsVSIDE(false)
, WatcomWMake(false)
@ -364,6 +365,16 @@ void cmState::SetIsInTryCompile(bool b)
this->IsInTryCompile = b;
}
bool cmState::GetIsGeneratorMultiConfig() const
{
return this->IsGeneratorMultiConfig;
}
void cmState::SetIsGeneratorMultiConfig(bool b)
{
this->IsGeneratorMultiConfig = b;
}
void cmState::RenameCommand(std::string const& oldName,
std::string const& newName)
{
@ -481,6 +492,9 @@ const char* cmState::GetGlobalProperty(const std::string& prop)
} else if (prop == "IN_TRY_COMPILE") {
this->SetGlobalProperty("IN_TRY_COMPILE",
this->IsInTryCompile ? "1" : "0");
} else if (prop == "GENERATOR_IS_MULTI_CONFIG") {
this->SetGlobalProperty("GENERATOR_IS_MULTI_CONFIG",
this->IsGeneratorMultiConfig ? "1" : "0");
} else if (prop == "ENABLED_LANGUAGES") {
std::string langs;
langs = cmJoin(this->EnabledLanguages, ";");

View File

@ -116,6 +116,9 @@ public:
bool GetIsInTryCompile() const;
void SetIsInTryCompile(bool b);
bool GetIsGeneratorMultiConfig() const;
void SetIsGeneratorMultiConfig(bool b);
cmCommand* GetCommand(std::string const& name) const;
void AddCommand(cmCommand* command);
void RemoveUnscriptableCommands();
@ -174,6 +177,7 @@ private:
std::string SourceDirectory;
std::string BinaryDirectory;
bool IsInTryCompile;
bool IsGeneratorMultiConfig;
bool WindowsShell;
bool WindowsVSIDE;
bool WatcomWMake;