Commit 64aac043 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'vs2022' into release-3.21

b6ac1039 VS: Update Visual Studio 17 2022 generator for Preview 4
f200f4d5

 VS: Fix managed C++ project generation for VS 2022
Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !6524
parents d2a5fef9 b6ac1039
Pipeline #247469 failed with stages
......@@ -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.
......
......@@ -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".
......@@ -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:
......
......@@ -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")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment