ExternalProject: Replace location tags in CMAKE_CACHE_ARGS
When we added CMAKE_CACHE_ARGS, we did not try it with any <SOURCE_DIR> or <INSTALL_DIR> references. This commit fixes that accidental omission.
This commit is contained in:
parent
d7a87b52a0
commit
d67a513447
|
@ -550,7 +550,24 @@ function(_ep_set_directories name)
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction(_ep_set_directories)
|
endfunction(_ep_set_directories)
|
||||||
|
|
||||||
function(_ep_write_initial_cache script_filename args)
|
|
||||||
|
# IMPORTANT: this MUST be a macro and not a function because of the
|
||||||
|
# in-place replacements that occur in each ${var}
|
||||||
|
#
|
||||||
|
macro(_ep_replace_location_tags target_name)
|
||||||
|
set(vars ${ARGN})
|
||||||
|
foreach(var ${vars})
|
||||||
|
if(${var})
|
||||||
|
foreach(dir SOURCE_DIR BINARY_DIR INSTALL_DIR TMP_DIR)
|
||||||
|
get_property(val TARGET ${target_name} PROPERTY _EP_${dir})
|
||||||
|
string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
function(_ep_write_initial_cache target_name script_filename args)
|
||||||
# Write out values into an initial cache, that will be passed to CMake with -C
|
# Write out values into an initial cache, that will be passed to CMake with -C
|
||||||
set(script_initial_cache "")
|
set(script_initial_cache "")
|
||||||
set(regex "^([^:]+):([^=]+)=(.*)$")
|
set(regex "^([^:]+):([^=]+)=(.*)$")
|
||||||
|
@ -584,6 +601,8 @@ function(_ep_write_initial_cache script_filename args)
|
||||||
set(setArg "${setArg}${accumulator}\" CACHE ${type} \"Initial cache\" FORCE)")
|
set(setArg "${setArg}${accumulator}\" CACHE ${type} \"Initial cache\" FORCE)")
|
||||||
set(script_initial_cache "${script_initial_cache}\n${setArg}")
|
set(script_initial_cache "${script_initial_cache}\n${setArg}")
|
||||||
endif()
|
endif()
|
||||||
|
# Replace location tags.
|
||||||
|
_ep_replace_location_tags(${target_name} script_initial_cache)
|
||||||
# Write out the initial cache file to the location specified.
|
# Write out the initial cache file to the location specified.
|
||||||
if(NOT EXISTS "${script_filename}.in")
|
if(NOT EXISTS "${script_filename}.in")
|
||||||
file(WRITE "${script_filename}.in" "\@script_initial_cache\@\n")
|
file(WRITE "${script_filename}.in" "\@script_initial_cache\@\n")
|
||||||
|
@ -864,14 +883,7 @@ function(ExternalProject_Add_Step name step)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Replace location tags.
|
# Replace location tags.
|
||||||
foreach(var comment command work_dir)
|
_ep_replace_location_tags(${name} comment command work_dir)
|
||||||
if(${var})
|
|
||||||
foreach(dir SOURCE_DIR BINARY_DIR INSTALL_DIR TMP_DIR)
|
|
||||||
get_property(val TARGET ${name} PROPERTY _EP_${dir})
|
|
||||||
string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Custom comment?
|
# Custom comment?
|
||||||
get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET)
|
get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET)
|
||||||
|
@ -1271,7 +1283,7 @@ function(_ep_add_configure_command name)
|
||||||
get_property(cmake_cache_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_ARGS)
|
get_property(cmake_cache_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_ARGS)
|
||||||
if(cmake_cache_args)
|
if(cmake_cache_args)
|
||||||
set(_ep_cache_args_script "${tmp_dir}/${name}-cache.cmake")
|
set(_ep_cache_args_script "${tmp_dir}/${name}-cache.cmake")
|
||||||
_ep_write_initial_cache("${_ep_cache_args_script}" "${cmake_cache_args}")
|
_ep_write_initial_cache(${name} "${_ep_cache_args_script}" "${cmake_cache_args}")
|
||||||
list(APPEND cmd "-C${_ep_cache_args_script}")
|
list(APPEND cmd "-C${_ep_cache_args_script}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,8 @@ if(can_build_tutorial_step5)
|
||||||
set(proj TutorialStep5-Local)
|
set(proj TutorialStep5-Local)
|
||||||
ExternalProject_Add(${proj}
|
ExternalProject_Add(${proj}
|
||||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
|
URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
|
||||||
|
CMAKE_ARGS -G ${CMAKE_GENERATOR} <SOURCE_DIR>
|
||||||
TEST_BEFORE_INSTALL 1
|
TEST_BEFORE_INSTALL 1
|
||||||
LOG_INSTALL 1
|
LOG_INSTALL 1
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue