diff options
author | Nils Gladitz <nilsgladitz@gmail.com> | 2014-05-15 17:12:40 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-05-28 16:28:18 (GMT) |
commit | 15a8af21e8bd8354dfff2063e01f695f85efdeb8 (patch) | |
tree | b7d98cab3ba63f61074a4f63a250934f0294826a /Source/cmCPackPropertiesGenerator.cxx | |
parent | 032961c6ac81d82270a7b1986935111aa5e32a56 (diff) | |
download | CMake-15a8af21e8bd8354dfff2063e01f695f85efdeb8.zip CMake-15a8af21e8bd8354dfff2063e01f695f85efdeb8.tar.gz CMake-15a8af21e8bd8354dfff2063e01f695f85efdeb8.tar.bz2 |
Add an "installed file" property scope
Teach set_property and get_property an "INSTALL" property type to be
associated with install-tree file paths. Make the properties available
to CPack for use during packaging. Add a "prop_inst" Sphinx domain
object type for documentation of such properties.
Diffstat (limited to 'Source/cmCPackPropertiesGenerator.cxx')
-rw-r--r-- | Source/cmCPackPropertiesGenerator.cxx | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Source/cmCPackPropertiesGenerator.cxx b/Source/cmCPackPropertiesGenerator.cxx new file mode 100644 index 0000000..cf24c13 --- /dev/null +++ b/Source/cmCPackPropertiesGenerator.cxx @@ -0,0 +1,45 @@ +#include "cmCPackPropertiesGenerator.h" + +#include "cmLocalGenerator.h" + +cmCPackPropertiesGenerator::cmCPackPropertiesGenerator( + cmMakefile* mf, + cmInstalledFile const& installedFile, + std::vector<std::string> const& configurations): + cmScriptGenerator("CPACK_BUILD_CONFIG", configurations), + Makefile(mf), + InstalledFile(installedFile) +{ + this->ActionsPerConfig = true; +} + +void cmCPackPropertiesGenerator::GenerateScriptForConfig(std::ostream& os, + const std::string& config, Indent const& indent) +{ + std::string const& expandedFileName = + this->InstalledFile.GetNameExpression().Evaluate(this->Makefile, config); + + cmInstalledFile::PropertyMapType const& properties = + this->InstalledFile.GetProperties(); + + for(cmInstalledFile::PropertyMapType::const_iterator i = properties.begin(); + i != properties.end(); ++i) + { + std::string const& name = i->first; + cmInstalledFile::Property const& property = i->second; + + os << indent << "set_property(INSTALL " << + cmLocalGenerator::EscapeForCMake(expandedFileName) << " PROPERTY " << + cmLocalGenerator::EscapeForCMake(name); + + for(cmInstalledFile::ExpressionVectorType::const_iterator + j = property.ValueExpressions.begin(); + j != property.ValueExpressions.end(); ++j) + { + std::string value = (*j)->Evaluate(this->Makefile, config); + os << " " << cmLocalGenerator::EscapeForCMake(value); + } + + os << ")\n"; + } +} |