فهرست منبع

BUG: Allow arbitrary text in values for some keywords. (And avoid warning that the arbitrary text is an unknown keyword.)

David Cole 16 سال پیش
والد
کامیت
10f4e911f0
1فایلهای تغییر یافته به همراه30 افزوده شده و 16 حذف شده
  1. 30 16
      Modules/ExternalProject.cmake

+ 30 - 16
Modules/ExternalProject.cmake

@@ -121,31 +121,45 @@ function(_ep_parse_arguments f name ns args)
   # upper-case letter followed by at least two more upper-case letters
   # or underscores to be keywords.
   set(key)
+
   foreach(arg IN LISTS args)
+    set(is_value 1)
+
     if(arg MATCHES "^[A-Z][A-Z_][A-Z_]+$" AND
         NOT ((arg STREQUAL "${key}") AND (key STREQUAL "COMMAND")) AND
         NOT arg MATCHES "^(TRUE|FALSE)$")
-      # Keyword
-      set(key "${arg}")
-      if(_ep_keywords_${f} AND NOT key MATCHES "${_ep_keywords_${f}}")
-        message(AUTHOR_WARNING "unknown ${f} keyword: ${key}")
-      endif()
-    elseif(key)
-      # Value
-      if(NOT arg STREQUAL "")
-        set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}")
+      if(_ep_keywords_${f} AND arg MATCHES "${_ep_keywords_${f}}")
+        set(is_value 0)
       else()
-        get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET)
-        if(have_key)
-          get_property(value TARGET ${name} PROPERTY ${ns}${key})
-          set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}")
+        if(NOT (key STREQUAL "COMMAND")
+          AND NOT (key STREQUAL "CVS_MODULE")
+          AND NOT (key STREQUAL "DEPENDS")
+          )
+          message(AUTHOR_WARNING "unknown ${f} keyword: ${arg}")
+        endif()
+      endif()
+    endif()
+
+    if(is_value)
+      if(key)
+        # Value
+        if(NOT arg STREQUAL "")
+          set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}")
         else()
-          set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}")
+          get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET)
+          if(have_key)
+            get_property(value TARGET ${name} PROPERTY ${ns}${key})
+            set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}")
+          else()
+            set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}")
+          endif()
         endif()
+      else()
+        # Missing Keyword
+        message(AUTHOR_WARNING "value '${arg}' with no previous keyword in ${f}")
       endif()
     else()
-      # Missing Keyword
-      message(AUTHOR_WARNING "value with no keyword in ${f}")
+      set(key "${arg}")
     endif()
   endforeach()
 endfunction(_ep_parse_arguments)