summaryrefslogtreecommitdiff
path: root/Source/cmInstalledFile.h
diff options
context:
space:
mode:
authorNils Gladitz <nilsgladitz@gmail.com>2014-05-15 19:12:40 +0200
committerBrad King <brad.king@kitware.com>2014-05-28 12:28:18 -0400
commit15a8af21e8bd8354dfff2063e01f695f85efdeb8 (patch)
treeb7d98cab3ba63f61074a4f63a250934f0294826a /Source/cmInstalledFile.h
parent032961c6ac81d82270a7b1986935111aa5e32a56 (diff)
downloadcmake-15a8af21e8bd8354dfff2063e01f695f85efdeb8.tar.gz
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/cmInstalledFile.h')
-rw-r--r--Source/cmInstalledFile.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/Source/cmInstalledFile.h b/Source/cmInstalledFile.h
new file mode 100644
index 0000000000..df28221bca
--- /dev/null
+++ b/Source/cmInstalledFile.h
@@ -0,0 +1,83 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2014 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#ifndef cmInstalledFile_h
+#define cmInstalledFile_h
+
+#include "cmGeneratorExpression.h"
+
+/** \class cmInstalledFile
+ * \brief Represents a file intended for installation.
+ *
+ * cmInstalledFile represents a file intended for installation.
+ */
+class cmInstalledFile
+{
+public:
+
+ typedef cmsys::auto_ptr<cmCompiledGeneratorExpression>
+ CompiledGeneratorExpressionPtrType;
+
+ typedef std::vector<cmCompiledGeneratorExpression*>
+ ExpressionVectorType;
+
+ struct Property
+ {
+ Property()
+ {
+
+ }
+
+ ~Property()
+ {
+ for(ExpressionVectorType::iterator i = ValueExpressions.begin();
+ i != ValueExpressions.end(); ++i)
+ {
+ delete *i;
+ }
+ }
+
+ ExpressionVectorType ValueExpressions;
+ };
+
+ typedef std::map<std::string, Property> PropertyMapType;
+
+ cmInstalledFile();
+
+ ~cmInstalledFile();
+
+ void RemoveProperty(const std::string& prop);
+
+ void SetProperty(cmMakefile const* mf,
+ const std::string& prop, const char *value);
+
+ void AppendProperty(cmMakefile const* mf,
+ const std::string& prop, const char* value,bool asString=false);
+
+ bool GetProperty(const std::string& prop, std::string& value) const;
+
+ bool GetPropertyAsBool(const std::string& prop) const;
+
+ void SetName(cmMakefile* mf, const std::string& name);
+
+ std::string const& GetName() const;
+
+ cmCompiledGeneratorExpression const& GetNameExpression() const;
+
+ PropertyMapType const& GetProperties() const { return this->Properties; }
+
+private:
+ std::string Name;
+ cmCompiledGeneratorExpression* NameExpression;
+ PropertyMapType Properties;
+};
+
+#endif