瀏覽代碼

Merge branch 'backport-revert-install-code-script-genex' into revert-install-code-script-genex

Brad King 7 年之前
父節點
當前提交
fd0e40f166

+ 0 - 4
Help/command/install.rst

@@ -442,10 +442,6 @@ example, the code
 
 will print a message during installation.
 
-The contents of ``SCRIPT`` or ``CODE`` may use "generator expressions" with
-the syntax ``$<...>``.  See the :manual:`cmake-generator-expressions(7)`
-manual for available expressions.
-
 Installing Exports
 ^^^^^^^^^^^^^^^^^^
 

+ 0 - 3
Help/release/3.13.rst

@@ -61,9 +61,6 @@ Commands
 * The :command:`add_link_options` command was created to add link
   options in the current directory.
 
-* The :command:`install(CODE)` and :command:`install(SCRIPT)` commands
-  learned to support generator expressions.
-
 * The :command:`install(TARGETS)` command learned to install targets
   created outside the current directory.
 

+ 8 - 32
Source/cmInstallScriptGenerator.cxx

@@ -2,7 +2,6 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmInstallScriptGenerator.h"
 
-#include "cmGeneratorExpression.h"
 #include "cmScriptGenerator.h"
 
 #include <ostream>
@@ -17,47 +16,24 @@ cmInstallScriptGenerator::cmInstallScriptGenerator(const char* script,
   , Script(script)
   , Code(code)
 {
-  // We need per-config actions if the script has generator expressions.
-  if (cmGeneratorExpression::Find(Script) != std::string::npos) {
-    this->ActionsPerConfig = true;
-  }
 }
 
 cmInstallScriptGenerator::~cmInstallScriptGenerator()
 {
 }
 
-void cmInstallScriptGenerator::Compute(cmLocalGenerator* lg)
+void cmInstallScriptGenerator::GenerateScript(std::ostream& os)
 {
-  this->LocalGenerator = lg;
-}
+  Indent indent;
+  std::string component_test =
+    this->CreateComponentTest(this->Component.c_str(), this->ExcludeFromAll);
+  os << indent << "if(" << component_test << ")\n";
 
-void cmInstallScriptGenerator::AddScriptInstallRule(std::ostream& os,
-                                                    Indent indent,
-                                                    std::string const& script)
-{
   if (this->Code) {
-    os << indent << script << "\n";
-  } else {
-    os << indent << "include(\"" << script << "\")\n";
-  }
-}
-
-void cmInstallScriptGenerator::GenerateScriptActions(std::ostream& os,
-                                                     Indent indent)
-{
-  if (this->ActionsPerConfig) {
-    this->cmInstallGenerator::GenerateScriptActions(os, indent);
+    os << indent << this->Script << "\n";
   } else {
-    this->AddScriptInstallRule(os, indent, this->Script);
+    os << indent << "include(\"" << this->Script << "\")\n";
   }
-}
 
-void cmInstallScriptGenerator::GenerateScriptForConfig(
-  std::ostream& os, const std::string& config, Indent indent)
-{
-  cmGeneratorExpression ge;
-  std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(this->Script);
-  this->AddScriptInstallRule(os, indent,
-                             cge->Evaluate(this->LocalGenerator, config));
+  os << indent << "endif()\n\n";
 }

+ 1 - 12
Source/cmInstallScriptGenerator.h

@@ -6,13 +6,10 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include "cmInstallGenerator.h"
-#include "cmScriptGenerator.h"
 
 #include <iosfwd>
 #include <string>
 
-class cmLocalGenerator;
-
 /** \class cmInstallScriptGenerator
  * \brief Generate target installation rules.
  */
@@ -23,18 +20,10 @@ public:
                            const char* component, bool exclude_from_all);
   ~cmInstallScriptGenerator() override;
 
-  void Compute(cmLocalGenerator* lg) override;
-
 protected:
-  void GenerateScriptActions(std::ostream& os, Indent indent) override;
-  void GenerateScriptForConfig(std::ostream& os, const std::string& config,
-                               Indent indent) override;
-  void AddScriptInstallRule(std::ostream& os, Indent indent,
-                            std::string const& script);
-
+  void GenerateScript(std::ostream& os) override;
   std::string Script;
   bool Code;
-  cmLocalGenerator* LocalGenerator;
 };
 
 #endif

+ 0 - 1
Tests/RunCMake/install/CODE-genex-bad-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 6
Tests/RunCMake/install/CODE-genex-bad-stderr.txt

@@ -1,6 +0,0 @@
-CMake Error:
-  Error evaluating generator expression:
-
-    \$<NOTAGENEX>
-
-  Expression did not evaluate to a known generator expression

+ 0 - 1
Tests/RunCMake/install/CODE-genex-bad.cmake

@@ -1 +0,0 @@
-install(CODE "message(\"$<NOTAGENEX>\")")

+ 0 - 7
Tests/RunCMake/install/CODE-genex-check.cmake

@@ -1,7 +0,0 @@
-execute_process(COMMAND ${CMAKE_COMMAND} -P ${RunCMake_TEST_BINARY_DIR}/cmake_install.cmake
-  OUTPUT_VARIABLE out ERROR_VARIABLE err)
-if(NOT out MATCHES "-- Install configuration: .*-- codegenexlib")
-  string(REGEX REPLACE "\n" "\n  " out "  ${out}")
-  string(APPEND RunCMake_TEST_FAILED
-      "\"-- codegenexlib\" was not found:\n${out}")
-endif()

+ 0 - 2
Tests/RunCMake/install/CODE-genex.cmake

@@ -1,2 +0,0 @@
-add_library( codegenexlib INTERFACE )
-install(CODE "message( STATUS \"$<TARGET_PROPERTY:codegenexlib,NAME>\")")

+ 0 - 2
Tests/RunCMake/install/RunCMakeTest.cmake

@@ -65,8 +65,6 @@ run_cmake(CMP0062-NEW)
 run_cmake(CMP0062-WARN)
 run_cmake(TARGETS-NAMELINK_COMPONENT-bad-all)
 run_cmake(TARGETS-NAMELINK_COMPONENT-bad-exc)
-run_cmake(CODE-genex)
-run_cmake(CODE-genex-bad)
 
 if(NOT RunCMake_GENERATOR STREQUAL "Xcode" OR NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" MATCHES "[;$]")
   run_install_test(FILES-TARGET_OBJECTS)