浏览代码

Merge topic 'external-project-source-subdir-usage'

615f3ed2 ExternalProject: make SOURCE_SUBDIR directly appendable
fdce782b ExternalProject: error out only if the property is unset
Brad King 9 年之前
父节点
当前提交
a08a48c2da
共有 1 个文件被更改,包括 9 次插入8 次删除
  1. 9 8
      Modules/ExternalProject.cmake

+ 9 - 8
Modules/ExternalProject.cmake

@@ -1087,10 +1087,14 @@ function(_ep_set_directories name)
   endforeach()
   get_property(source_subdir TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR)
   if(NOT source_subdir)
-    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR ".")
+    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "")
   elseif(IS_ABSOLUTE "${source_subdir}")
     message(FATAL_ERROR
       "External project ${name} has non-relative SOURCE_SUBDIR!")
+  else()
+    # Prefix with a slash so that when appended to the source directory, it
+    # behaves as expected.
+    set_property(TARGET ${name} PROPERTY _EP_SOURCE_SUBDIR "/${source_subdir}")
   endif()
   if(build_in_source)
     get_property(source_dir TARGET ${name} PROPERTY _EP_SOURCE_DIR)
@@ -1184,10 +1188,11 @@ endfunction()
 function(ExternalProject_Get_Property name)
   foreach(var ${ARGN})
     string(TOUPPER "${var}" VAR)
-    get_property(${var} TARGET ${name} PROPERTY _EP_${VAR})
-    if(NOT ${var})
+    get_property(is_set TARGET ${name} PROPERTY _EP_${VAR} SET)
+    if(NOT is_set)
       message(FATAL_ERROR "External project \"${name}\" has no ${var}")
     endif()
+    get_property(${var} TARGET ${name} PROPERTY _EP_${VAR})
     set(${var} "${${var}}" PARENT_SCOPE)
   endforeach()
 endfunction()
@@ -2256,11 +2261,7 @@ function(_ep_add_configure_command name)
       endif()
     endif()
 
-    if(source_subdir STREQUAL ".")
-      list(APPEND cmd "${source_dir}")
-    else()
-      list(APPEND cmd "${source_dir}/${source_subdir}")
-    endif()
+    list(APPEND cmd "${source_dir}${source_subdir}")
   endif()
 
   # If anything about the configure command changes, (command itself, cmake