VS: Add support for generator expressions to VS_CONFIGURATION_TYPE
Generator expressions in target property VS_CONFIGURATION_TYPE might be used to set the ConfigurationType to Utility for certain configurations to not build the target while still linking to the target in other configurations. Fixes: #19613
This commit is contained in:
parent
0d356e4c94
commit
8909a450a6
@ -4,6 +4,8 @@ VS_CONFIGURATION_TYPE
|
||||
Visual Studio project configuration type.
|
||||
|
||||
Sets the ``ConfigurationType`` attribute for a generated Visual Studio project.
|
||||
The property value may use
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
If this property is set, it overrides the default setting that is based on the
|
||||
target type (e.g. ``StaticLibrary``, ``Application``, ...).
|
||||
|
||||
|
5
Help/release/dev/vs-configuration-type-genex.rst
Normal file
5
Help/release/dev/vs-configuration-type-genex.rst
Normal file
@ -0,0 +1,5 @@
|
||||
vs-configuration-type-genex
|
||||
---------------------------
|
||||
|
||||
* :prop_tgt:`VS_CONFIGURATION_TYPE` now supports
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
@ -1115,7 +1115,10 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues(Elem& e0)
|
||||
std::string configType;
|
||||
if (const char* vsConfigurationType =
|
||||
this->GeneratorTarget->GetProperty("VS_CONFIGURATION_TYPE")) {
|
||||
configType = vsConfigurationType;
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(vsConfigurationType);
|
||||
configType = cge->Evaluate(this->LocalGenerator, c);
|
||||
} else {
|
||||
switch (this->GeneratorTarget->GetType()) {
|
||||
case cmStateEnums::SHARED_LIBRARY:
|
||||
|
@ -9,7 +9,7 @@ file(STRINGS "${vcProjectFile}" lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if(line MATCHES "^ *<ConfigurationType>(.*)</ConfigurationType>$")
|
||||
set(propertyFound TRUE)
|
||||
set(expectedValue "MyValue")
|
||||
set(expectedValue "MyValue foo")
|
||||
set(actualValue ${CMAKE_MATCH_1})
|
||||
if(NOT (${actualValue} STREQUAL ${expectedValue}))
|
||||
set(RunCMake_TEST_FAILED "ConfigurationType \"${actualValue}\" differs from expected value \"${expectedValue}\".")
|
||||
|
@ -1,3 +1,3 @@
|
||||
enable_language(CXX)
|
||||
add_library(foo foo.cpp)
|
||||
set_target_properties(foo PROPERTIES VS_CONFIGURATION_TYPE "MyValue")
|
||||
set_target_properties(foo PROPERTIES VS_CONFIGURATION_TYPE "MyValue $<TARGET_PROPERTY:foo,NAME>")
|
||||
|
Loading…
Reference in New Issue
Block a user