Browse Source

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 16 years ago
parent
commit
dd7b48c9c3
2 changed files with 13 additions and 1 deletions
  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;
     }