Deprecate Visual Studio 10 2010 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
2021-07-29 11:49:27 -04:00
parent 9251205512
commit 22dab6eb96
10 changed files with 53 additions and 2 deletions

View File

@@ -1,7 +1,14 @@
Visual Studio 10 2010
---------------------
Generates Visual Studio 10 (VS 2010) project files.
Deprecated. Generates Visual Studio 10 (VS 2010) 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 10 2010 tools
using the :generator:`Visual Studio 11 2012` (or above) generator
with :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v100``, 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 10`` without the year component.

View File

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

View File

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

View File

@@ -296,6 +296,25 @@ void cmGlobalVisualStudio7Generator::Generate()
this->CallVisualStudioMacro(MacroReload,
GetSLNFile(this->LocalGenerators[0].get()));
}
if (this->Version == VS10 && !this->CMakeInstance->GetIsInTryCompile()) {
std::string cmakeWarnVS10;
if (cmProp cached = this->CMakeInstance->GetState()->GetCacheEntryValue(
"CMAKE_WARN_VS10")) {
this->CMakeInstance->MarkCliAsUsed("CMAKE_WARN_VS10");
cmakeWarnVS10 = *cached;
} else {
cmSystemTools::GetEnv("CMAKE_WARN_VS10", cmakeWarnVS10);
}
if (cmakeWarnVS10.empty() || !cmIsOff(cmakeWarnVS10)) {
this->CMakeInstance->IssueMessage(
MessageType::WARNING,
"The \"Visual Studio 10 2010\" generator is deprecated "
"and will be removed in a future version of CMake."
"\n"
"Add CMAKE_WARN_VS10=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 10 2010")
set(TEST_WARN_VS10_CODE "set(ENV{CMAKE_WARN_VS10} OFF)")
else()
set(TEST_WARN_VS10_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,3 +36,4 @@ unset(ENV{CMAKE_GENERATOR_TOOLSET})
unset(ENV{CMAKE_EXPORT_COMPILE_COMMANDS})
@TEST_HOME_ENV_CODE@
@TEST_WARN_VS10_CODE@

View File

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

View File

@@ -918,3 +918,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 10 2010")
run_cmake_with_options(DeprecateVS10-WARN-ON -DCMAKE_WARN_VS10=ON)
unset(ENV{CMAKE_WARN_VS10})
run_cmake(DeprecateVS10-WARN-ON)
run_cmake_with_options(DeprecateVS10-WARN-OFF -DCMAKE_WARN_VS10=OFF)
endif()