1 #include "cmCPackPropertiesGenerator.h"
2
3 #include <map>
4 #include <ostream>
5
6 #include "cmGeneratorExpression.h"
7 #include "cmInstalledFile.h"
8 #include "cmOutputConverter.h"
9
cmCPackPropertiesGenerator(cmLocalGenerator * lg,cmInstalledFile const & installedFile,std::vector<std::string> const & configurations)10 cmCPackPropertiesGenerator::cmCPackPropertiesGenerator(
11 cmLocalGenerator* lg, cmInstalledFile const& installedFile,
12 std::vector<std::string> const& configurations)
13 : cmScriptGenerator("CPACK_BUILD_CONFIG", configurations)
14 , LG(lg)
15 , InstalledFile(installedFile)
16 {
17 this->ActionsPerConfig = true;
18 }
19
GenerateScriptForConfig(std::ostream & os,const std::string & config,Indent indent)20 void cmCPackPropertiesGenerator::GenerateScriptForConfig(
21 std::ostream& os, const std::string& config, Indent indent)
22 {
23 std::string const& expandedFileName =
24 this->InstalledFile.GetNameExpression().Evaluate(this->LG, config);
25
26 cmInstalledFile::PropertyMapType const& properties =
27 this->InstalledFile.GetProperties();
28
29 for (cmInstalledFile::PropertyMapType::value_type const& i : properties) {
30 std::string const& name = i.first;
31 cmInstalledFile::Property const& property = i.second;
32
33 os << indent << "set_property(INSTALL "
34 << cmOutputConverter::EscapeForCMake(expandedFileName) << " PROPERTY "
35 << cmOutputConverter::EscapeForCMake(name);
36
37 for (cmInstalledFile::ExpressionVectorType::value_type const& j :
38 property.ValueExpressions) {
39 std::string value = j->Evaluate(this->LG, config);
40 os << " " << cmOutputConverter::EscapeForCMake(value);
41 }
42
43 os << ")\n";
44 }
45 }
46