Просмотр исходного кода

Deprecate Visual Studio 12 2013 generator

Update documentation to mark the generator deprecated.  Add a warning at
the end of generation plus an option to turn off the warning.
Brad King 2 лет назад
Родитель
Сommit
75b573a628

+ 1 - 1
Help/generator/Visual Studio 10 2010.rst

@@ -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 12 2013`
+to build with VS 10 2010 tools using the :generator:`Visual Studio 14 2015`
 (or above) generator with :variable:`CMAKE_GENERATOR_TOOLSET` set to
 ``v100``, or by using the :generator:`NMake Makefiles` generator.

+ 1 - 1
Help/generator/Visual Studio 11 2012.rst

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

+ 8 - 1
Help/generator/Visual Studio 12 2013.rst

@@ -1,7 +1,14 @@
 Visual Studio 12 2013
 ---------------------
 
-Generates Visual Studio 12 (VS 2013) project files.
+Deprecated.  Generates Visual Studio 12 (VS 2013) 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 12 2013 tools
+  using the :generator:`Visual Studio 14 2015` (or above) generator
+  with :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v120``, 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 12" without the year component.

+ 1 - 1
Help/generator/Visual Studio 9 2008.rst

@@ -6,7 +6,7 @@ Deprecated.  Generates Visual Studio 9 2008 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 9 2008 tools
-  using the :generator:`Visual Studio 12 2013` generator (or above,
+  using the :generator:`Visual Studio 14 2015` generator (or above,
   and with VS 10 2010 also installed) with
   :variable:`CMAKE_GENERATOR_TOOLSET` set to ``v90``,
   or by using the :generator:`NMake Makefiles` generator.

+ 5 - 0
Help/release/dev/vs12-deprecate.rst

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

+ 1 - 1
Source/cmGlobalVisualStudio12Generator.cxx

@@ -64,7 +64,7 @@ public:
   cmDocumentationEntry GetDocumentation() const override
   {
     return { std::string(vs12generatorName) + " [arch]",
-             "Generates Visual Studio 2013 project files.  "
+             "Deprecated.  Generates Visual Studio 2013 project files.  "
              "Optional [arch] can be \"Win64\" or \"ARM\"." };
   }
 

+ 20 - 0
Source/cmGlobalVisualStudio7Generator.cxx

@@ -329,6 +329,26 @@ void cmGlobalVisualStudio7Generator::Generate()
         "Add CMAKE_WARN_VS9=OFF to the cache to disable this warning.");
     }
   }
+
+  if (this->Version == VSVersion::VS12 &&
+      !this->CMakeInstance->GetIsInTryCompile()) {
+    std::string cmakeWarnVS12;
+    if (cmValue cached = this->CMakeInstance->GetState()->GetCacheEntryValue(
+          "CMAKE_WARN_VS12")) {
+      this->CMakeInstance->MarkCliAsUsed("CMAKE_WARN_VS12");
+      cmakeWarnVS12 = *cached;
+    } else {
+      cmSystemTools::GetEnv("CMAKE_WARN_VS12", cmakeWarnVS12);
+    }
+    if (cmakeWarnVS12.empty() || !cmIsOff(cmakeWarnVS12)) {
+      this->CMakeInstance->IssueMessage(
+        MessageType::WARNING,
+        "The \"Visual Studio 12 2013\" generator is deprecated "
+        "and will be removed in a future version of CMake."
+        "\n"
+        "Add CMAKE_WARN_VS12=OFF to the cache to disable this warning.");
+    }
+  }
 }
 
 void cmGlobalVisualStudio7Generator::OutputSLNFile(

+ 2 - 0
Tests/CMakeLists.txt

@@ -42,6 +42,8 @@ endif()
 # Suppress generator deprecation warnings in test suite.
 if(CMAKE_GENERATOR MATCHES "^Visual Studio 9 2008")
   set(TEST_WARN_VS_CODE "set(ENV{CMAKE_WARN_VS9} OFF)")
+elseif(CMAKE_GENERATOR MATCHES "^Visual Studio 12 2013")
+  set(TEST_WARN_VS_CODE "set(ENV{CMAKE_WARN_VS12} OFF)")
 else()
   set(TEST_WARN_VS_CODE "")
 endif()

+ 0 - 0
Tests/RunCMake/CommandLine/DeprecateVS12-WARN-OFF.cmake


+ 5 - 0
Tests/RunCMake/CommandLine/DeprecateVS12-WARN-ON-stderr.txt

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

+ 0 - 0
Tests/RunCMake/CommandLine/DeprecateVS12-WARN-ON.cmake


+ 7 - 0
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -1118,3 +1118,10 @@ if(RunCMake_GENERATOR MATCHES "^Visual Studio 9 2008")
   run_cmake(DeprecateVS9-WARN-ON)
   run_cmake_with_options(DeprecateVS9-WARN-OFF -DCMAKE_WARN_VS9=OFF)
 endif()
+
+if(RunCMake_GENERATOR MATCHES "^Visual Studio 12 2013")
+  run_cmake_with_options(DeprecateVS12-WARN-ON -DCMAKE_WARN_VS12=ON)
+  unset(ENV{CMAKE_WARN_VS12})
+  run_cmake(DeprecateVS12-WARN-ON)
+  run_cmake_with_options(DeprecateVS12-WARN-OFF -DCMAKE_WARN_VS12=OFF)
+endif()