From b80286ef813dbdd69bc9d0c5bd780b3a0befbc9f Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Mon, 15 Feb 2021 13:04:32 +0100 Subject: [PATCH] add dependencies using EXCLUDE_FROM_ALL flag --- cmake/CPM.cmake | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 6315d31..799317c 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -387,7 +387,7 @@ function(CPMAddPackage) set(${CPM_ARGS_NAME}_ADDED YES) set(${CPM_ARGS_NAME}_SOURCE_DIR ${download_directory}) if(NOT CPM_ARGS_DOWNLOAD_ONLY AND EXISTS ${download_directory}/CMakeLists.txt) - add_subdirectory(${download_directory} ${${CPM_ARGS_NAME}_BINARY_DIR}) + add_subdirectory(${download_directory} ${${CPM_ARGS_NAME}_BINARY_DIR} EXCLUDE_FROM_ALL) endif() set(CPM_SKIP_FETCH TRUE) set(PACKAGE_INFO "${PACKAGE_INFO} at ${download_directory}") @@ -557,16 +557,19 @@ function(cpm_fetch_package PACKAGE DOWNLOAD_ONLY) return() endif() - if(DOWNLOAD_ONLY) - FetchContent_GetProperties(${PACKAGE}) - if(NOT ${PACKAGE}_POPULATED) - FetchContent_Populate(${PACKAGE}) + FetchContent_GetProperties(${PACKAGE}) + string(TOLOWER "${PACKAGE}" lower_case_name) + + if(NOT ${lower_case_name}_POPULATED) + FetchContent_Populate(${PACKAGE}) + if(EXISTS ${${lower_case_name}_SOURCE_DIR}/CMakeLists.txt) + set(CPM_OLD_INDENT "${CPM_INDENT}") + set(CPM_INDENT "${CPM_INDENT} ${PACKAGE}:") + add_subdirectory( + ${${lower_case_name}_SOURCE_DIR} ${${lower_case_name}_BINARY_DIR} EXCLUDE_FROM_ALL + ) + set(CPM_INDENT "${CPM_OLD_INDENT}") endif() - else() - set(CPM_OLD_INDENT "${CPM_INDENT}") - set(CPM_INDENT "${CPM_INDENT} ${PACKAGE}:") - FetchContent_MakeAvailable(${PACKAGE}) - set(CPM_INDENT "${CPM_OLD_INDENT}") endif() endfunction()