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 năm trước cách đây
mục cha
commit
dd7b48c9c3
2 tập tin đã thay đổi với 13 bổ sung1 xóa
  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;
     }