ExternalProject: Allow generator expressions with LOG_* options (#15287)
Use file(GENERATE) to write the logging wrapper scripts to evaluate generator expressions. Use a per-config script names in case the content varies by configuration.
This commit is contained in:
parent
7bd8cfb813
commit
0273ef1469
|
@ -106,6 +106,8 @@ Create custom targets to build projects in external trees
|
|||
:manual:`CMake Options <cmake(1)>`. Arguments in the form
|
||||
``-Dvar:string=on`` are always passed to the command line, and
|
||||
therefore cannot be changed by the user.
|
||||
Arguments may use
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
``CMAKE_CACHE_ARGS <arg>...``
|
||||
Initial cache arguments, of the form ``-Dvar:string=on``.
|
||||
These arguments are written in a pre-load a script that populates
|
||||
|
@ -271,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
|
||||
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
|
||||
|
||||
The ``ExternalProject_Get_Property`` function retrieves external project
|
||||
|
@ -1303,14 +1308,14 @@ endif()
|
|||
endif()
|
||||
endforeach()
|
||||
set(code "${code}set(command \"${cmd}\")${code_execute_process}")
|
||||
file(WRITE ${stamp_dir}/${name}-${step}-impl.cmake "${code}")
|
||||
set(command ${CMAKE_COMMAND} "-Dmake=\${make}" "-Dconfig=\${config}" -P ${stamp_dir}/${name}-${step}-impl.cmake)
|
||||
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}-$<CONFIG>-impl.cmake)
|
||||
endif()
|
||||
|
||||
# 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})
|
||||
file(WRITE ${script} "
|
||||
set(code "
|
||||
${code_cygpath_make}
|
||||
set(command \"${command}\")
|
||||
execute_process(
|
||||
|
@ -1331,6 +1336,7 @@ else()
|
|||
message(STATUS \"\${msg}\")
|
||||
endif()
|
||||
")
|
||||
file(GENERATE OUTPUT "${script}" CONTENT "${code}")
|
||||
set(command ${CMAKE_COMMAND} ${make} ${config} -P ${script})
|
||||
set(${cmd_var} "${command}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
|
|
@ -6,7 +6,7 @@ ExternalProject_Add(Subdir1
|
|||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Subdir1
|
||||
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/Subdir1
|
||||
|
||||
CMAKE_ARGS -DNORMAL_VAR=NORMAL_VALUE
|
||||
CMAKE_ARGS -DNORMAL_VAR=NORMAL_VALUE -DGENEX_VAR=$<1:GENEX_VALUE>
|
||||
LOG_CONFIGURE 1
|
||||
|
||||
BUILD_COMMAND ""
|
||||
|
|
|
@ -4,3 +4,7 @@ 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()
|
||||
|
|
Loading…
Reference in New Issue