diff options
-rw-r--r-- | Source/CPack/cmCPackGenerator.cxx | 29 | ||||
-rw-r--r-- | Source/CPack/cmCPackGenerator.h | 16 |
2 files changed, 41 insertions, 4 deletions
diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 4ad25ad..f55b068 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -994,17 +994,29 @@ bool cmCPackGenerator::ReadListFile(const char* moduleName) return retval; } -void cmCPackGenerator::SetOptionIfNotSet(const std::string& op, - const char* value) +template <typename ValueType> +void cmCPackGenerator::StoreOptionIfNotSet(const std::string& op, + ValueType value) { cmProp def = this->MakefileMap->GetDefinition(op); if (cmNonempty(def)) { return; } - this->SetOption(op, value); + this->StoreOption(op, value); } -void cmCPackGenerator::SetOption(const std::string& op, const char* value) +void cmCPackGenerator::SetOptionIfNotSet(const std::string& op, + const char* value) +{ + this->StoreOptionIfNotSet(op, value); +} +void cmCPackGenerator::SetOptionIfNotSet(const std::string& op, cmProp value) +{ + this->StoreOptionIfNotSet(op, value); +} + +template <typename ValueType> +void cmCPackGenerator::StoreOption(const std::string& op, ValueType value) { if (!value) { this->MakefileMap->RemoveDefinition(op); @@ -1016,6 +1028,15 @@ void cmCPackGenerator::SetOption(const std::string& op, const char* value) this->MakefileMap->AddDefinition(op, value); } +void cmCPackGenerator::SetOption(const std::string& op, const char* value) +{ + this->StoreOption(op, value); +} +void cmCPackGenerator::SetOption(const std::string& op, cmProp value) +{ + this->StoreOption(op, value); +} + int cmCPackGenerator::DoPackage() { cmCPackLogger(cmCPackLog::LOG_OUTPUT, diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h index 1968c35..e63a830 100644 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -85,7 +85,17 @@ public: //! Set and get the options void SetOption(const std::string& op, const char* value); + void SetOption(const std::string& op, const std::string& value) + { + this->SetOption(op, cmProp(value)); + } + void SetOption(const std::string& op, cmProp value); void SetOptionIfNotSet(const std::string& op, const char* value); + void SetOptionIfNotSet(const std::string& op, const std::string& value) + { + this->SetOptionIfNotSet(op, cmProp(value)); + } + void SetOptionIfNotSet(const std::string& op, cmProp value); cmProp GetOption(const std::string& op) const; std::vector<std::string> GetOptions() const; bool IsSet(const std::string& name) const; @@ -324,6 +334,12 @@ protected: bool TraceExpand; cmMakefile* MakefileMap; + +private: + template <typename ValueType> + void StoreOption(const std::string& op, ValueType value); + template <typename ValueType> + void StoreOptionIfNotSet(const std::string& op, ValueType value); }; #define cmCPackTypeMacro(klass, superclass) \ |