ExternalProject: Add EXCLUDE_FROM_ALL option to ExternalProject_Add
When adding a new external project, the "all" target will depend on this. This option allows one to add an external project will not be executed when the "all" target is executed. The reason for this is that an external project could be useful, for example, only for running tests, and therefore not necessary during the build.
This commit is contained in:
parent
0a1c012961
commit
1ddcc582c1
|
@ -16,6 +16,7 @@
|
||||||
# [LIST_SEPARATOR sep] # Sep to be replaced by ; in cmd lines
|
# [LIST_SEPARATOR sep] # Sep to be replaced by ; in cmd lines
|
||||||
# [TMP_DIR dir] # Directory to store temporary files
|
# [TMP_DIR dir] # Directory to store temporary files
|
||||||
# [STAMP_DIR dir] # Directory to store step timestamps
|
# [STAMP_DIR dir] # Directory to store step timestamps
|
||||||
|
# [EXCLUDE_FROM_ALL 1] # The "all" target does not depend on this
|
||||||
# #--Download step--------------
|
# #--Download step--------------
|
||||||
# [DOWNLOAD_NAME fname] # File name to store (if not end of URL)
|
# [DOWNLOAD_NAME fname] # File name to store (if not end of URL)
|
||||||
# [DOWNLOAD_DIR dir] # Directory to store downloaded files
|
# [DOWNLOAD_DIR dir] # Directory to store downloaded files
|
||||||
|
@ -1913,6 +1914,9 @@ function(ExternalProject_Add name)
|
||||||
set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
|
set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles)
|
||||||
set(complete_stamp_file "${cmf_dir}${cfgdir}/${name}-complete")
|
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})
|
add_custom_target(${name} ALL DEPENDS ${complete_stamp_file})
|
||||||
set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1)
|
set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1)
|
||||||
_ep_parse_arguments(ExternalProject_Add ${name} _EP_ "${ARGN}")
|
_ep_parse_arguments(ExternalProject_Add ${name} _EP_ "${ARGN}")
|
||||||
|
@ -1920,6 +1924,12 @@ function(ExternalProject_Add name)
|
||||||
_ep_get_step_stampfile(${name} "done" done_stamp_file)
|
_ep_get_step_stampfile(${name} "done" done_stamp_file)
|
||||||
_ep_get_step_stampfile(${name} "install" install_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
|
# The 'complete' step depends on all other steps and creates a
|
||||||
# 'done' mark. A dependent external project's 'configure' step
|
# 'done' mark. A dependent external project's 'configure' step
|
||||||
# depends on the 'done' mark so that it rebuilds when this project
|
# depends on the 'done' mark so that it rebuilds when this project
|
||||||
|
|
Loading…
Reference in New Issue