Merge topic 'vs2022' into release-3.21

b6ac10394b VS: Update Visual Studio 17 2022 generator for Preview 4
f200f4d5a7 VS: Fix managed C++ project generation for VS 2022

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6524
This commit is contained in:
Brad King
2021-09-16 12:16:42 +00:00
committed by Kitware Robot
4 changed files with 19 additions and 3 deletions

View File

@@ -7,7 +7,7 @@ Generates Visual Studio 17 (VS 2022) project files.
.. warning::
This is experimental and based on "Visual Studio 2022 Preview 3.1".
This is experimental and based on "Visual Studio 2022 Preview 4".
As of this version of CMake, VS 2022 has not been released.
Project Types
@@ -51,7 +51,7 @@ name (architecture). For example:
Toolset Selection
^^^^^^^^^^^^^^^^^
The ``v143`` toolset that comes with VS 17 2022 Preview 3.1 is selected by
The ``v143`` toolset that comes with VS 17 2022 Preview 4 is selected by
default. The :variable:`CMAKE_GENERATOR_TOOLSET` option may be set, perhaps
via the :manual:`cmake(1)` ``-T`` option, to specify another toolset.

View File

@@ -27,7 +27,7 @@ Generators
----------
* The :generator:`Visual Studio 17 2022` generator was added. This is
experimental and based on "Visual Studio 2022 Preview 3.1" because this
experimental and based on "Visual Studio 2022 Preview 4" because this
version of VS has not been released.
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator
@@ -313,3 +313,9 @@ Changes made since CMake 3.21.0 include the following.
* The :generator:`Visual Studio 17 2022` generator is now based on
"Visual Studio 2022 Preview 3.1". Previously it was based on "Preview 2".
3.21.3
------
* The :generator:`Visual Studio 17 2022` generator is now based on
"Visual Studio 2022 Preview 4". Previously it was based on "Preview 3.1".

View File

@@ -581,6 +581,10 @@ void cmVisualStudio10TargetGenerator::Generate()
}
if (this->Managed) {
if (this->LocalGenerator->GetVersion() >=
cmGlobalVisualStudioGenerator::VS17) {
e1.Element("ManagedAssembly", "true");
}
std::string outputType;
switch (this->GeneratorTarget->GetType()) {
case cmStateEnums::OBJECT_LIBRARY:

View File

@@ -33,6 +33,12 @@ set(TARGET_RESX
set(TARGET_LIBRARIES ${SYSLIBS})
add_executable(${PROJECT_NAME} ${TARGET_SRC} ${TARGET_H} ${TARGET_RESX})
if(NOT CMAKE_GENERATOR MATCHES "Visual Studio 1[0-6]")
# VS 17 2022 and above require a global mark on managed assemblies.
# CMake adds this automatically when using COMMON_LANGUAGE_RUNTIME,
# but this test covers direct use of /clr.
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_GLOBAL_ManagedAssembly "true")
endif()
# Note: The property VS_GLOBAL_KEYWORD must be set.
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_GLOBAL_KEYWORD "ManagedCProj")