Fix <package>_SOURCE_DIR and _BINARY_DIR handling when caching is active (#314)

* fix: use CACHE variables instead relying on FetchContents mechanism

* apply cmake-format

Signed-off-by: DNKpp <DNKpp2011@gmail.com>
This commit is contained in:
DNKpp
2021-12-30 16:20:37 +01:00
committed by GitHub
parent 22078d5e0d
commit 939123d1b4

View File

@@ -619,10 +619,11 @@ function(CPMAddPackage)
get_filename_component(download_directory ${download_directory} ABSOLUTE) get_filename_component(download_directory ${download_directory} ABSOLUTE)
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${download_directory}) list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${download_directory})
if(EXISTS ${download_directory}) if(EXISTS ${download_directory})
# avoid FetchContent modules to improve performance cpm_store_fetch_properties(
set(${CPM_ARGS_NAME}_BINARY_DIR ${CPM_FETCHCONTENT_BASE_DIR}/${lower_case_name}-build) ${CPM_ARGS_NAME} "${download_directory}"
set(${CPM_ARGS_NAME}_ADDED YES) "${CPM_FETCHCONTENT_BASE_DIR}/${lower_case_name}-build"
set(${CPM_ARGS_NAME}_SOURCE_DIR ${download_directory}) )
cpm_get_fetch_properties("${CPM_ARGS_NAME}")
if(DEFINED CPM_ARGS_GIT_TAG) if(DEFINED CPM_ARGS_GIT_TAG)
# warn if cache has been changed since checkout # warn if cache has been changed since checkout
@@ -793,18 +794,32 @@ function(cpm_get_fetch_properties PACKAGE)
if(${CPM_DRY_RUN}) if(${CPM_DRY_RUN})
return() return()
endif() endif()
FetchContent_GetProperties(${PACKAGE})
string(TOLOWER ${PACKAGE} lpackage)
set(${PACKAGE}_SOURCE_DIR set(${PACKAGE}_SOURCE_DIR
"${${lpackage}_SOURCE_DIR}" "${CPM_PACKAGE_${PACKAGE}_SOURCE_DIR}"
PARENT_SCOPE PARENT_SCOPE
) )
set(${PACKAGE}_BINARY_DIR set(${PACKAGE}_BINARY_DIR
"${${lpackage}_BINARY_DIR}" "${CPM_PACKAGE_${PACKAGE}_BINARY_DIR}"
PARENT_SCOPE PARENT_SCOPE
) )
endfunction() endfunction()
function(cpm_store_fetch_properties PACKAGE source_dir binary_dir)
if(${CPM_DRY_RUN})
return()
endif()
set(CPM_PACKAGE_${PACKAGE}_SOURCE_DIR
"${source_dir}"
CACHE INTERNAL ""
)
set(CPM_PACKAGE_${PACKAGE}_BINARY_DIR
"${binary_dir}"
CACHE INTERNAL ""
)
endfunction()
# adds a package as a subdirectory if viable, according to provided options # adds a package as a subdirectory if viable, according to provided options
function( function(
cpm_add_subdirectory cpm_add_subdirectory
@@ -862,6 +877,10 @@ function(cpm_fetch_package PACKAGE populated)
) )
endif() endif()
cpm_store_fetch_properties(
${CPM_ARGS_NAME} ${${lower_case_name}_SOURCE_DIR} ${${lower_case_name}_BINARY_DIR}
)
set(${PACKAGE}_SOURCE_DIR set(${PACKAGE}_SOURCE_DIR
${${lower_case_name}_SOURCE_DIR} ${${lower_case_name}_SOURCE_DIR}
PARENT_SCOPE PARENT_SCOPE