浏览代码

Fix issue #10258: re-configure if args change.

Fixes issue http://public.kitware.com/Bug/view.php?id=10258
Also, fix complaint that DOWNLOAD_COMMAND cannot contain arguments
consisting entirely of upper case letters. It validly does when,
for example, you construct a custom cvs command line and the module
name is all upper case, like VTK.
David Cole 15 年之前
父节点
当前提交
ea6260cb18
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      Modules/ExternalProject.cmake

+ 12 - 1
Modules/ExternalProject.cmake

@@ -157,6 +157,7 @@ function(_ep_parse_arguments f name ns args)
         if(NOT (key STREQUAL "COMMAND")
           AND NOT (key STREQUAL "CVS_MODULE")
           AND NOT (key STREQUAL "DEPENDS")
+          AND NOT (key STREQUAL "DOWNLOAD_COMMAND")
           )
           message(AUTHOR_WARNING "unknown ${f} keyword: ${arg}")
         endif()
@@ -793,7 +794,7 @@ endfunction(_ep_add_patch_command)
 
 # TODO: Make sure external projects use the proper compiler
 function(_ep_add_configure_command name)
-  ExternalProject_Get_Property(${name} source_dir binary_dir)
+  ExternalProject_Get_Property(${name} source_dir binary_dir tmp_dir)
 
   _ep_get_configuration_subdir_suffix(cfgdir)
 
@@ -827,6 +828,16 @@ function(_ep_add_configure_command name)
     endif()
   endif()
 
+  # If anything about the configure command changes, (command itself, cmake
+  # used, cmake args or cmake generator) then re-run the configure step.
+  # Fixes issue http://public.kitware.com/Bug/view.php?id=10258
+  #
+  if(NOT EXISTS ${tmp_dir}/${name}-cfgcmd.txt.in)
+    file(WRITE ${tmp_dir}/${name}-cfgcmd.txt.in "cmd='@cmd@'\n")
+  endif()
+  configure_file(${tmp_dir}/${name}-cfgcmd.txt.in ${tmp_dir}/${name}-cfgcmd.txt)
+  list(APPEND file_deps ${tmp_dir}/${name}-cfgcmd.txt)
+
   ExternalProject_Add_Step(${name} configure
     COMMAND ${cmd}
     WORKING_DIRECTORY ${binary_dir}