ExternalProject: Allow generator expressions in initial cache options
Use file(GENERATE) to write the initial cache file so that we can evaluate generator expressions. Use a per-config initial cache file name in case the content varies by configuration.
This commit is contained in:
parent
1cf43dcf7c
commit
7bd8cfb813
@ -113,6 +113,8 @@ Create custom targets to build projects in external trees
|
|||||||
overcome command line length limits.
|
overcome command line length limits.
|
||||||
These arguments are :command:`set` using the ``FORCE`` argument,
|
These arguments are :command:`set` using the ``FORCE`` argument,
|
||||||
and therefore cannot be changed by the user.
|
and therefore cannot be changed by the user.
|
||||||
|
Arguments may use
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||||
``CMAKE_CACHE_DEFAULT_ARGS <arg>...``
|
``CMAKE_CACHE_DEFAULT_ARGS <arg>...``
|
||||||
Initial default cache arguments, of the form ``-Dvar:string=on``.
|
Initial default cache arguments, of the form ``-Dvar:string=on``.
|
||||||
These arguments are written in a pre-load a script that populates
|
These arguments are written in a pre-load a script that populates
|
||||||
@ -121,6 +123,8 @@ Create custom targets to build projects in external trees
|
|||||||
These arguments can be used as default value that will be set if no
|
These arguments can be used as default value that will be set if no
|
||||||
previous value is found in the cache, and that the user can change
|
previous value is found in the cache, and that the user can change
|
||||||
later.
|
later.
|
||||||
|
Arguments may use
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||||
|
|
||||||
Build step options are:
|
Build step options are:
|
||||||
|
|
||||||
@ -1126,10 +1130,7 @@ function(_ep_write_initial_cache target_name script_filename script_initial_cach
|
|||||||
# Replace location tags.
|
# Replace location tags.
|
||||||
_ep_replace_location_tags(${target_name} script_initial_cache)
|
_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")
|
file(GENERATE OUTPUT "${script_filename}" CONTENT "${script_initial_cache}")
|
||||||
file(WRITE "${script_filename}.in" "\@script_initial_cache\@\n")
|
|
||||||
endif()
|
|
||||||
configure_file("${script_filename}.in" "${script_filename}")
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
@ -2054,7 +2055,7 @@ function(_ep_add_configure_command name)
|
|||||||
get_property(cmake_cache_default_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_DEFAULT_ARGS)
|
get_property(cmake_cache_default_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_DEFAULT_ARGS)
|
||||||
|
|
||||||
if(cmake_cache_args OR cmake_cache_default_args)
|
if(cmake_cache_args OR cmake_cache_default_args)
|
||||||
set(_ep_cache_args_script "${tmp_dir}/${name}-cache.cmake")
|
set(_ep_cache_args_script "${tmp_dir}/${name}-cache-$<CONFIG>.cmake")
|
||||||
if(cmake_cache_args)
|
if(cmake_cache_args)
|
||||||
_ep_command_line_to_initial_cache(script_initial_cache_force "${cmake_cache_args}" 1)
|
_ep_command_line_to_initial_cache(script_initial_cache_force "${cmake_cache_args}" 1)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache.cmake")
|
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache-Debug.cmake")
|
||||||
|
|
||||||
if(NOT EXISTS "${_cache_file}")
|
if(NOT EXISTS "${_cache_file}")
|
||||||
set(RunCMake_TEST_FAILED "Initial cache not created")
|
set(RunCMake_TEST_FAILED "Initial cache not created")
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
|
endif()
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
|
||||||
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
||||||
DOWNLOAD_COMMAND ""
|
DOWNLOAD_COMMAND ""
|
||||||
CMAKE_CACHE_ARGS "-DFOO:STRING=BAR")
|
CMAKE_CACHE_ARGS "-DFOO:STRING=$<1:BAR>$<0:BAD>")
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache.cmake")
|
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache-Debug.cmake")
|
||||||
|
|
||||||
if(NOT EXISTS "${_cache_file}")
|
if(NOT EXISTS "${_cache_file}")
|
||||||
set(RunCMake_TEST_FAILED "Initial cache not created")
|
set(RunCMake_TEST_FAILED "Initial cache not created")
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
|
endif()
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
|
||||||
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
||||||
DOWNLOAD_COMMAND ""
|
DOWNLOAD_COMMAND ""
|
||||||
CMAKE_CACHE_DEFAULT_ARGS "-DFOO:STRING=BAR")
|
CMAKE_CACHE_DEFAULT_ARGS "-DFOO:STRING=$<1:BAR>$<0:BAD>")
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache.cmake")
|
set(_cache_file "${RunCMake_TEST_BINARY_DIR}/tmp/FOO-cache-Debug.cmake")
|
||||||
|
|
||||||
if(NOT EXISTS "${_cache_file}")
|
if(NOT EXISTS "${_cache_file}")
|
||||||
set(RunCMake_TEST_FAILED "Initial cache not created")
|
set(RunCMake_TEST_FAILED "Initial cache not created")
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
|
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
|
endif()
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
|
||||||
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
||||||
DOWNLOAD_COMMAND ""
|
DOWNLOAD_COMMAND ""
|
||||||
CMAKE_CACHE_ARGS "-DFOO:STRING=BAR"
|
CMAKE_CACHE_ARGS "-DFOO:STRING=$<1:BAR>$<0:BAD>"
|
||||||
CMAKE_CACHE_DEFAULT_ARGS "-DBAR:STRING=BAZ")
|
CMAKE_CACHE_DEFAULT_ARGS "-DBAR:STRING=$<1:BAZ>$<0:BAD>")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user