Deprecate Visual Studio 11 2012 generator

Update documentation to mark the generator deprecated.  Add a warning at
the end of generation plus an option to turn off the warning.
This commit is contained in:
Brad King
2022-09-27 11:05:53 -04:00
parent 5faf145a5b
commit 6c1337cb79
11 changed files with 55 additions and 4 deletions

View File

@@ -3,6 +3,6 @@ Visual Studio 10 2010
Removed. This once generated Visual Studio 10 2010 project files, but
the generator has been removed since CMake 3.25. It is still possible
to build with VS 10 2010 tools using the :generator:`Visual Studio 11 2012`
to build with VS 10 2010 tools using the :generator:`Visual Studio 12 2013`
(or above) generator with :variable:`CMAKE_GENERATOR_TOOLSET` set to
``v100``, or by using the :generator:`NMake Makefiles` generator.

View File

@@ -1,7 +1,14 @@
Visual Studio 11 2012
---------------------
Generates Visual Studio 11 (VS 2012) project files.
Deprecated. Generates Visual Studio 11 (VS 2012) project files.
.. note::
This generator is deprecated and will be removed in a future version
of CMake. It will still be possible to build with VS 11 2012 tools
using the :generator:`Visual Studio 12 2013` (or above) generator
with :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v110``, or by
using the :generator:`NMake Makefiles` generator.
For compatibility with CMake versions prior to 3.0, one may specify this
generator using the name "Visual Studio 11" without the year component.

View File

@@ -0,0 +1,5 @@
vs11-deprecate
--------------
* The :generator:`Visual Studio 11 2012` generator is now deprecated
and will be removed in a future version of CMake.

View File

@@ -77,7 +77,7 @@ public:
void GetDocumentation(cmDocumentationEntry& entry) const override
{
entry.Name = std::string(vs11generatorName) + " [arch]";
entry.Brief = "Generates Visual Studio 2012 project files. "
entry.Brief = "Deprecated. Generates Visual Studio 2012 project files. "
"Optional [arch] can be \"Win64\" or \"ARM\".";
}

View File

@@ -303,6 +303,26 @@ void cmGlobalVisualStudio7Generator::Generate()
this->CallVisualStudioMacro(MacroReload,
GetSLNFile(this->LocalGenerators[0].get()));
}
if (this->Version == VSVersion::VS11 &&
!this->CMakeInstance->GetIsInTryCompile()) {
std::string cmakeWarnVS11;
if (cmValue cached = this->CMakeInstance->GetState()->GetCacheEntryValue(
"CMAKE_WARN_VS11")) {
this->CMakeInstance->MarkCliAsUsed("CMAKE_WARN_VS11");
cmakeWarnVS11 = *cached;
} else {
cmSystemTools::GetEnv("CMAKE_WARN_VS11", cmakeWarnVS11);
}
if (cmakeWarnVS11.empty() || !cmIsOff(cmakeWarnVS11)) {
this->CMakeInstance->IssueMessage(
MessageType::WARNING,
"The \"Visual Studio 11 2012\" generator is deprecated "
"and will be removed in a future version of CMake."
"\n"
"Add CMAKE_WARN_VS11=OFF to the cache to disable this warning.");
}
}
}
void cmGlobalVisualStudio7Generator::OutputSLNFile(

View File

@@ -39,6 +39,13 @@ set(ENV{HOME} \"${TEST_HOME}\")
")
endif()
# Suppress generator deprecation warnings in test suite.
if(CMAKE_GENERATOR MATCHES "^Visual Studio 11 2012")
set(TEST_WARN_VS11_CODE "set(ENV{CMAKE_WARN_VS11} OFF)")
else()
set(TEST_WARN_VS11_CODE "")
endif()
# 3.9 or later provides a definitive answer to whether we are multi-config
# through a global property. Prior to 3.9, CMAKE_CONFIGURATION_TYPES being set
# is assumed to mean multi-config, but developers might modify it so it is

View File

@@ -36,4 +36,4 @@ unset(ENV{CMAKE_GENERATOR_TOOLSET})
unset(ENV{CMAKE_EXPORT_COMPILE_COMMANDS})
@TEST_HOME_ENV_CODE@
@TEST_WARN_VS10_CODE@
@TEST_WARN_VS11_CODE@

View File

@@ -0,0 +1,5 @@
^CMake Warning:
The "Visual Studio 11 2012" generator is deprecated and will be removed in
a future version of CMake.
Add CMAKE_WARN_VS11=OFF to the cache to disable this warning.$

View File

@@ -1071,3 +1071,10 @@ set(ProfilingTestOutput ${RunCMake_TEST_BINARY_DIR}/output.json)
set(RunCMake_TEST_OPTIONS --profiling-format=google-trace --profiling-output=${ProfilingTestOutput})
run_cmake(ProfilingTest)
unset(RunCMake_TEST_OPTIONS)
if(RunCMake_GENERATOR MATCHES "^Visual Studio 11 2012")
run_cmake_with_options(DeprecateVS11-WARN-ON -DCMAKE_WARN_VS11=ON)
unset(ENV{CMAKE_WARN_VS11})
run_cmake(DeprecateVS11-WARN-ON)
run_cmake_with_options(DeprecateVS11-WARN-OFF -DCMAKE_WARN_VS11=OFF)
endif()