Merge topic 'dotnet_target_fw_init'

71a033616a added CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2032
This commit is contained in:
Brad King 2018-05-16 14:02:42 +00:00 committed by Kitware Robot
commit c8c07c24dd
8 changed files with 60 additions and 4 deletions

View File

@ -171,6 +171,7 @@ Properties on Targets
/prop_tgt/DEBUG_POSTFIX
/prop_tgt/DEFINE_SYMBOL
/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION
/prop_tgt/EchoString
/prop_tgt/ENABLE_EXPORTS
/prop_tgt/EXCLUDE_FROM_ALL

View File

@ -34,6 +34,7 @@ Variables that Provide Information
/variable/CMAKE_CURRENT_SOURCE_DIR
/variable/CMAKE_DIRECTORY_LABELS
/variable/CMAKE_DL_LIBS
/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
/variable/CMAKE_EDIT_COMMAND
/variable/CMAKE_EXECUTABLE_SUFFIX
/variable/CMAKE_EXTRA_GENERATOR

View File

@ -0,0 +1,13 @@
DOTNET_TARGET_FRAMEWORK_VERSION
-------------------------------
Specify the .NET target framework version.
Used to specify the .NET target framework version for C++/CLI. For
example, "v4.5".
This property is only evaluated for :ref:`Visual Studio Generators`
VS 2010 and above.
Can be initialized for all targets using the variable
:variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`.

View File

@ -5,3 +5,6 @@ Specify the .NET target framework version.
Used to specify the .NET target framework version for C++/CLI. For
example, "v4.5".
This property is deprecated and should not be used anymore. Use
:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` instead.

View File

@ -0,0 +1,11 @@
dotnet-target-fw-initialization
-------------------------------
* The :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` target property
was introduced as replacement for
:prop_tgt:`VS_DOTNET_TARGET_FRAMEWORK_VERSION`, which is considered
deprecated now.
* The :variable:`CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION` variable
was defined to initialize all
:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` target properties.

View File

@ -0,0 +1,16 @@
CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
-------------------------------------
Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION`
property of targets.
This variable is used to initialize the
:prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` property on all
targets. See that target property for additional information.
Setting ``CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION`` may be necessary
when working with ``C#`` and newer .NET framework versions to
avoid referencing errors with the ``ALL_BUILD`` CMake target.
This variable is only evaluated for :ref:`Visual Studio Generators`
VS 2010 and above.

View File

@ -399,6 +399,10 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
this->SetPropertyDefault("JOB_POOL_COMPILE", nullptr);
this->SetPropertyDefault("JOB_POOL_LINK", nullptr);
}
if (this->TargetTypeValue <= cmStateEnums::UTILITY) {
this->SetPropertyDefault("DOTNET_TARGET_FRAMEWORK_VERSION", nullptr);
}
}
cmGlobalGenerator* cmTarget::GetGlobalGenerator() const

View File

@ -482,10 +482,17 @@ void cmVisualStudio10TargetGenerator::Generate()
projLabel = this->Name.c_str();
}
e1.Element("ProjectName", projLabel);
if (const char* targetFrameworkVersion =
this->GeneratorTarget->GetProperty(
"VS_DOTNET_TARGET_FRAMEWORK_VERSION")) {
e1.Element("TargetFrameworkVersion", targetFrameworkVersion);
{
// TODO: add deprecation warning for VS_* property?
const char* targetFrameworkVersion = this->GeneratorTarget->GetProperty(
"VS_DOTNET_TARGET_FRAMEWORK_VERSION");
if (!targetFrameworkVersion) {
targetFrameworkVersion = this->GeneratorTarget->GetProperty(
"DOTNET_TARGET_FRAMEWORK_VERSION");
}
if (targetFrameworkVersion) {
e1.Element("TargetFrameworkVersion", targetFrameworkVersion);
}
}
// Disable the project upgrade prompt that is displayed the first time a