Explorar el Código

ENH: Define STRINGS cache entry property

This property defines a list of values for a cache entry of type STRING.
A CMake GUI may optionally use a drop-down selection widget for the
entry instead of a generic text entry field.  We do not enforce that the
value of the entry match one of the strings listed.
Brad King hace 17 años
padre
commit
dd7b48c9c3
Se han modificado 2 ficheros con 13 adiciones y 1 borrados
  1. 11 0
      Source/cmCacheManager.cxx
  2. 2 1
      Source/cmSetPropertyCommand.cxx

+ 11 - 0
Source/cmCacheManager.cxx

@@ -357,6 +357,7 @@ const char* cmCacheManager::PersistentProperties[] =
 {
   "ADVANCED",
   "MODIFIED",
+  "STRINGS",
   0
 };
 
@@ -987,6 +988,16 @@ void cmCacheManager::DefineProperties(cmake *cm)
      "which creates it (set, option, find_library, etc.)."
       );
 
+  cm->DefineProperty
+    ("STRINGS", cmProperty::CACHE,
+     "Enumerate possible STRING entry values for GUI selection.",
+     "For cache entries with type STRING, this enumerates a set of values.  "
+     "CMake GUIs may use this to provide a selection widget instead of a "
+     "generic string entry field.  "
+     "This is for convenience only.  "
+     "CMake does not enforce that the value matches one of those listed."
+      );
+
   cm->DefineProperty
     ("VALUE", cmProperty::CACHE,
      "Value of a cache entry.",

+ 2 - 1
Source/cmSetPropertyCommand.cxx

@@ -419,12 +419,13 @@ bool cmSetPropertyCommand::HandleCacheMode()
       }
     }
   else if(this->PropertyName != "HELPSTRING" &&
+          this->PropertyName != "STRINGS" &&
           this->PropertyName != "VALUE")
     {
     cmOStringStream e;
     e << "given invalid CACHE property " << this->PropertyName << ".  "
       << "Settable CACHE properties are: "
-      << "ADVANCED, HELPSTRING, TYPE, and VALUE.";
+      << "ADVANCED, HELPSTRING, STRINGS, TYPE, and VALUE.";
     this->SetError(e.str().c_str());
     return false;
     }