Merge topic 'ExternalProject_exclude-from-all'
1ddcc582
ExternalProject: Add EXCLUDE_FROM_ALL option to ExternalProject_Add0a1c0129
ExternalProject: Add EXCLUDE_FROM_MAIN option to ExternalProject_Add_Step
This commit is contained in:
commit
487f7a41ec
|
@ -16,6 +16,7 @@
|
|||
# [LIST_SEPARATOR sep] # Sep to be replaced by ; in cmd lines
|
||||
# [TMP_DIR dir] # Directory to store temporary files
|
||||
# [STAMP_DIR dir] # Directory to store step timestamps
|
||||
# [EXCLUDE_FROM_ALL 1] # The "all" target does not depend on this
|
||||
# #--Download step--------------
|
||||
# [DOWNLOAD_NAME fname] # File name to store (if not end of URL)
|
||||
# [DOWNLOAD_DIR dir] # Directory to store downloaded files
|
||||
|
@ -119,6 +120,7 @@
|
|||
# [DEPENDERS steps...] # Steps that depend on this step
|
||||
# [DEPENDS files...] # Files on which this step depends
|
||||
# [ALWAYS 1] # No stamp file, step always runs
|
||||
# [EXCLUDE_FROM_MAIN 1] # Main target does not depend on this step
|
||||
# [WORKING_DIRECTORY dir] # Working directory for command
|
||||
# [LOG 1] # Wrap step in script to log output
|
||||
# )
|
||||
|
@ -1192,14 +1194,17 @@ function(ExternalProject_Add_Step name step)
|
|||
set(complete_stamp_file "${cmf_dir}${cfgdir}/${name}-complete")
|
||||
_ep_get_step_stampfile(${name} ${step} stamp_file)
|
||||
|
||||
add_custom_command(APPEND
|
||||
OUTPUT ${complete_stamp_file}
|
||||
DEPENDS ${stamp_file}
|
||||
)
|
||||
|
||||
_ep_parse_arguments(ExternalProject_Add_Step
|
||||
${name} _EP_${step}_ "${ARGN}")
|
||||
|
||||
get_property(exclude_from_main TARGET ${name} PROPERTY _EP_${step}_EXCLUDE_FROM_MAIN)
|
||||
if(NOT exclude_from_main)
|
||||
add_custom_command(APPEND
|
||||
OUTPUT ${complete_stamp_file}
|
||||
DEPENDS ${stamp_file}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Steps depending on this step.
|
||||
get_property(dependers TARGET ${name} PROPERTY _EP_${step}_DEPENDERS)
|
||||
foreach(depender IN LISTS dependers)
|
||||
|
@ -1909,6 +1914,9 @@ function(ExternalProject_Add name)
|
|||
set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
|
||||
set(complete_stamp_file "${cmf_dir}${cfgdir}/${name}-complete")
|
||||
|
||||
# The "ALL" option to add_custom_target just tells it to not set the
|
||||
# EXCLUDE_FROM_ALL target property. Later, if the EXCLUDE_FROM_ALL
|
||||
# argument was passed, we explicitly set it for the target.
|
||||
add_custom_target(${name} ALL DEPENDS ${complete_stamp_file})
|
||||
set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1)
|
||||
_ep_parse_arguments(ExternalProject_Add ${name} _EP_ "${ARGN}")
|
||||
|
@ -1916,6 +1924,12 @@ function(ExternalProject_Add name)
|
|||
_ep_get_step_stampfile(${name} "done" done_stamp_file)
|
||||
_ep_get_step_stampfile(${name} "install" install_stamp_file)
|
||||
|
||||
# Set the EXCLUDE_FROM_ALL target property if required.
|
||||
get_property(exclude_from_all TARGET ${name} PROPERTY _EP_EXCLUDE_FROM_ALL)
|
||||
if(exclude_from_all)
|
||||
set_property(TARGET ${name} PROPERTY EXCLUDE_FROM_ALL TRUE)
|
||||
endif()
|
||||
|
||||
# The 'complete' step depends on all other steps and creates a
|
||||
# 'done' mark. A dependent external project's 'configure' step
|
||||
# depends on the 'done' mark so that it rebuilds when this project
|
||||
|
|
Loading…
Reference in New Issue