Merge topic 'ExternalProject-genex'
b470d618 Help: Add notes for topic 'ExternalProject-genex' 0273ef14 ExternalProject: Allow generator expressions with LOG_* options (#15287) 7bd8cfb8 ExternalProject: Allow generator expressions in initial cache options 1cf43dcf Tests: Add case to cover ExternalProject with subdirectories
This commit is contained in:
commit
1468f31988
6
Help/release/dev/ExternalProject-genex.rst
Normal file
6
Help/release/dev/ExternalProject-genex.rst
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
ExternalProject-genex
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
* The :module:`ExternalProject` module APIs learned to support
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`
|
||||||
|
when using ``LOG_*`` options and in CMake initial cache options.
|
@ -106,6 +106,8 @@ Create custom targets to build projects in external trees
|
|||||||
:manual:`CMake Options <cmake(1)>`. Arguments in the form
|
:manual:`CMake Options <cmake(1)>`. Arguments in the form
|
||||||
``-Dvar:string=on`` are always passed to the command line, and
|
``-Dvar:string=on`` are always passed to the command line, and
|
||||||
therefore cannot be changed by the user.
|
therefore cannot be changed by the user.
|
||||||
|
Arguments may use
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||||
``CMAKE_CACHE_ARGS <arg>...``
|
``CMAKE_CACHE_ARGS <arg>...``
|
||||||
Initial cache arguments, of the form ``-Dvar:string=on``.
|
Initial 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
|
||||||
@ -113,6 +115,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 +125,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:
|
||||||
|
|
||||||
@ -267,6 +273,9 @@ specifies to run ``make`` and then ``echo done`` during the build step.
|
|||||||
Whether the current working directory is preserved between commands is
|
Whether the current working directory is preserved between commands is
|
||||||
not defined. Behavior of shell operators like ``&&`` is not defined.
|
not defined. Behavior of shell operators like ``&&`` is not defined.
|
||||||
|
|
||||||
|
Arguments to ``<step>_COMMAND`` or ``COMMAND`` options may use
|
||||||
|
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||||
|
|
||||||
.. command:: ExternalProject_Get_Property
|
.. command:: ExternalProject_Get_Property
|
||||||
|
|
||||||
The ``ExternalProject_Get_Property`` function retrieves external project
|
The ``ExternalProject_Get_Property`` function retrieves external project
|
||||||
@ -1126,10 +1135,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()
|
||||||
|
|
||||||
|
|
||||||
@ -1302,14 +1308,14 @@ endif()
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
set(code "${code}set(command \"${cmd}\")${code_execute_process}")
|
set(code "${code}set(command \"${cmd}\")${code_execute_process}")
|
||||||
file(WRITE ${stamp_dir}/${name}-${step}-impl.cmake "${code}")
|
file(GENERATE OUTPUT "${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake" CONTENT "${code}")
|
||||||
set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-impl.cmake)
|
set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-$<CONFIG>-impl.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Wrap the command in a script to log output to files.
|
# Wrap the command in a script to log output to files.
|
||||||
set(script ${stamp_dir}/${name}-${step}.cmake)
|
set(script ${stamp_dir}/${name}-${step}-$<CONFIG>.cmake)
|
||||||
set(logbase ${stamp_dir}/${name}-${step})
|
set(logbase ${stamp_dir}/${name}-${step})
|
||||||
file(WRITE ${script} "
|
set(code "
|
||||||
${code_cygpath_make}
|
${code_cygpath_make}
|
||||||
set(command \"${command}\")
|
set(command \"${command}\")
|
||||||
execute_process(
|
execute_process(
|
||||||
@ -1330,6 +1336,7 @@ else()
|
|||||||
message(STATUS \"\${msg}\")
|
message(STATUS \"\${msg}\")
|
||||||
endif()
|
endif()
|
||||||
")
|
")
|
||||||
|
file(GENERATE OUTPUT "${script}" CONTENT "${code}")
|
||||||
set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script})
|
set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script})
|
||||||
set(${cmd_var} "${command}" PARENT_SCOPE)
|
set(${cmd_var} "${command}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
@ -2054,7 +2061,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()
|
||||||
|
@ -1326,6 +1326,18 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
|||||||
set_tests_properties(ExternalProject PROPERTIES
|
set_tests_properties(ExternalProject PROPERTIES
|
||||||
TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
|
TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
|
||||||
|
|
||||||
|
add_test(NAME ExternalProjectSubdir
|
||||||
|
COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
|
||||||
|
--build-and-test
|
||||||
|
"${CMake_SOURCE_DIR}/Tests/ExternalProjectSubdir"
|
||||||
|
"${CMake_BINARY_DIR}/Tests/ExternalProjectSubdir"
|
||||||
|
${build_generator_args}
|
||||||
|
--build-project ExternalProjectSubdir
|
||||||
|
--force-new-ctest-process
|
||||||
|
--build-options ${build_options}
|
||||||
|
)
|
||||||
|
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectSubdir")
|
||||||
|
|
||||||
add_test(ExternalProjectLocal ${CMAKE_CTEST_COMMAND}
|
add_test(ExternalProjectLocal ${CMAKE_CTEST_COMMAND}
|
||||||
--build-and-test
|
--build-and-test
|
||||||
"${CMake_SOURCE_DIR}/Tests/ExternalProjectLocal"
|
"${CMake_SOURCE_DIR}/Tests/ExternalProjectLocal"
|
||||||
|
14
Tests/ExternalProjectSubdir/CMakeLists.txt
Normal file
14
Tests/ExternalProjectSubdir/CMakeLists.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
project(ExternalProjectSubdir NONE)
|
||||||
|
include(ExternalProject)
|
||||||
|
|
||||||
|
ExternalProject_Add(Subdir1
|
||||||
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Subdir1
|
||||||
|
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/Subdir1
|
||||||
|
|
||||||
|
CMAKE_ARGS -DNORMAL_VAR=NORMAL_VALUE -DGENEX_VAR=$<1:GENEX_VALUE>
|
||||||
|
LOG_CONFIGURE 1
|
||||||
|
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND ""
|
||||||
|
)
|
10
Tests/ExternalProjectSubdir/Subdir1/CMakeLists.txt
Normal file
10
Tests/ExternalProjectSubdir/Subdir1/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
project(Subdir1 NONE)
|
||||||
|
|
||||||
|
if(NOT "${NORMAL_VAR}" STREQUAL "NORMAL_VALUE")
|
||||||
|
message(SEND_ERROR "NORMAL_VAR != 'NORMAL_VALUE'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT "${GENEX_VAR}" STREQUAL "GENEX_VALUE")
|
||||||
|
message(SEND_ERROR "GENEX_VAR != 'GENEX_VALUE'")
|
||||||
|
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