Browse Source

cmCPackGenerator::SetOption accepts cmProp or std::string

Marc Chevrier 4 years ago
parent
commit
7aeb262278
2 changed files with 41 additions and 4 deletions
  1. 25 4
      Source/CPack/cmCPackGenerator.cxx
  2. 16 0
      Source/CPack/cmCPackGenerator.h

+ 25 - 4
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,

+ 16 - 0
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)                                   \