mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-22 04:07:49 -05:00
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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user