diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmInstallCommand.cxx | 23 | ||||
-rw-r--r-- | Source/cmInstallCommand.h | 12 | ||||
-rw-r--r-- | Source/cmInstallScriptGenerator.cxx | 12 | ||||
-rw-r--r-- | Source/cmInstallScriptGenerator.h | 3 |
4 files changed, 43 insertions, 7 deletions
diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index f51fb28..0669b7f 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -35,6 +35,10 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args) { return this->HandleScriptMode(args); } + else if(args[0] == "CODE") + { + return this->HandleScriptMode(args); + } else if(args[0] == "TARGETS") { return this->HandleTargetsMode(args); @@ -59,11 +63,18 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args) bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args) { bool doing_script = false; + bool doing_code = false; for(size_t i=0; i < args.size(); ++i) { if(args[i] == "SCRIPT") { doing_script = true; + doing_code = false; + } + else if(args[i] == "CODE") + { + doing_script = false; + doing_code = true; } else if(doing_script) { @@ -83,12 +94,24 @@ bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args) this->Makefile->AddInstallGenerator( new cmInstallScriptGenerator(script.c_str())); } + else if(doing_code) + { + doing_code = false; + std::string code = args[i]; + this->Makefile->AddInstallGenerator( + new cmInstallScriptGenerator(code.c_str(), true)); + } } if(doing_script) { this->SetError("given no value for SCRIPT argument."); return false; } + if(doing_code) + { + this->SetError("given no value for CODE argument."); + return false; + } return true; } diff --git a/Source/cmInstallCommand.h b/Source/cmInstallCommand.h index ea5e201..4907b91 100644 --- a/Source/cmInstallCommand.h +++ b/Source/cmInstallCommand.h @@ -156,12 +156,16 @@ public: "such as shell scripts. Use the TARGETS form to install targets " "built within the project." "\n" - "The SCRIPT signature:\n" - " INSTALL(SCRIPT <file1> [SCRIPT <file2> [...]])\n" + "The SCRIPT and CODE signature:\n" + " INSTALL([[SCRIPT <file>] [CODE <code>]] [...])\n" "The SCRIPT form will invoke the given CMake script files during " "installation. If the script file name is a relative path " - "it will be interpreted with respect to the current source directory." - "\n" + "it will be interpreted with respect to the current source directory. " + "The CODE form will invoke the given CMake code during installation. " + "Code is specified as a single argument inside a double-quoted string. " + "For example, the code\n" + " INSTALL(CODE \"MESSAGE(\\\"Sample install message.\\\")\")\n" + "will print a message during installation.\n" "NOTE: This command supercedes the INSTALL_TARGETS command and the " "target properties PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT. " "It also replaces the FILES forms of the INSTALL_FILES and " diff --git a/Source/cmInstallScriptGenerator.cxx b/Source/cmInstallScriptGenerator.cxx index 1322f72..8bcfbc3 100644 --- a/Source/cmInstallScriptGenerator.cxx +++ b/Source/cmInstallScriptGenerator.cxx @@ -18,7 +18,8 @@ //---------------------------------------------------------------------------- cmInstallScriptGenerator -::cmInstallScriptGenerator(const char* script): Script(script) +::cmInstallScriptGenerator(const char* script, bool code): + Script(script), Code(code) { } @@ -31,5 +32,12 @@ cmInstallScriptGenerator //---------------------------------------------------------------------------- void cmInstallScriptGenerator::GenerateScript(std::ostream& os) { - os << "INCLUDE(\"" << this->Script << "\")\n"; + if(this->Code) + { + os << this->Script << "\n"; + } + else + { + os << "INCLUDE(\"" << this->Script << "\")\n"; + } } diff --git a/Source/cmInstallScriptGenerator.h b/Source/cmInstallScriptGenerator.h index 6b3cdfc..2e9461a 100644 --- a/Source/cmInstallScriptGenerator.h +++ b/Source/cmInstallScriptGenerator.h @@ -25,12 +25,13 @@ class cmInstallScriptGenerator: public cmInstallGenerator { public: - cmInstallScriptGenerator(const char* script); + cmInstallScriptGenerator(const char* script, bool code = false); virtual ~cmInstallScriptGenerator(); protected: virtual void GenerateScript(std::ostream& os); std::string Script; + bool Code; }; #endif |