add support for SOURCE_DIR argument (#97)

* add support for SOURCE_DIR argument

* simplify code

* add test

* update comment
This commit is contained in:
Lars Melchior
2020-02-25 13:29:21 +01:00
committed by GitHub
parent 775a235880
commit 01b69aad82
5 changed files with 61 additions and 17 deletions

View File

@@ -28,7 +28,7 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR) cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
set(CURRENT_CPM_VERSION 0.16) set(CURRENT_CPM_VERSION 0.17)
if(CPM_DIRECTORY) if(CPM_DIRECTORY)
if(NOT ${CPM_DIRECTORY} MATCHES ${CMAKE_CURRENT_LIST_DIR}) if(NOT ${CPM_DIRECTORY} MATCHES ${CMAKE_CURRENT_LIST_DIR})
@@ -208,22 +208,22 @@ function(CPMAddPackage)
if (DEFINED CPM_ARGS_DOWNLOAD_COMMAND) if (DEFINED CPM_ARGS_DOWNLOAD_COMMAND)
set(FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND}) set(FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND})
else() elseif(DEFINED CPM_ARGS_SOURCE_DIR)
if (CPM_SOURCE_CACHE AND NOT DEFINED CPM_ARGS_SOURCE_DIR) set(FETCH_CONTENT_DECLARE_EXTRA_OPTS SOURCE_DIR ${CPM_ARGS_SOURCE_DIR})
string(TOLOWER ${CPM_ARGS_NAME} lower_case_name) elseif (CPM_SOURCE_CACHE)
set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS}) string(TOLOWER ${CPM_ARGS_NAME} lower_case_name)
list(SORT origin_parameters) set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS})
string(SHA1 origin_hash "${origin_parameters}") list(SORT origin_parameters)
set(download_directory ${CPM_SOURCE_CACHE}/${lower_case_name}/${origin_hash}) string(SHA1 origin_hash "${origin_parameters}")
list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS SOURCE_DIR ${download_directory}) set(download_directory ${CPM_SOURCE_CACHE}/${lower_case_name}/${origin_hash})
if (EXISTS ${download_directory}) list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS SOURCE_DIR ${download_directory})
list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ":") if (EXISTS ${download_directory})
set(PACKAGE_INFO "${download_directory}") list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ":")
else() set(PACKAGE_INFO "${download_directory}")
# remove timestamps so CMake will re-download the dependency else()
file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/_deps/${lower_case_name}-subbuild) # remove timestamps so CMake will re-download the dependency
set(PACKAGE_INFO "${PACKAGE_INFO} -> ${download_directory}") file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/_deps/${lower_case_name}-subbuild)
endif() set(PACKAGE_INFO "${PACKAGE_INFO} -> ${download_directory}")
endif() endif()
endif() endif()

View File

@@ -0,0 +1,19 @@
include(CMakePackageConfigHelpers)
include(${CPM_PATH}/testing.cmake)
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/source_dir)
configure_package_config_file(
"${CMAKE_CURRENT_LIST_DIR}/source_dir/CMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/source_dir/CMakeLists.txt"
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk
)
execute_process(
COMMAND
${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/source_dir" "-B${TEST_BUILD_DIR}"
RESULT_VARIABLE ret
)
ASSERT_EQUAL(${ret} "0")

1
test/unit/source_dir/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/CMakeLists.txt

View File

@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project(CPMExampleCatch2)
# ---- Options ----
option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF)
# ---- Dependencies ----
include(@CPM_PATH@/CPM.cmake)
CPMAddPackage(
NAME Dependency
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependency
)
# ---- Call dependency method to validate correct addition of directory ----
dependency_function()

View File

@@ -0,0 +1,4 @@
function(dependency_function)
message("called external method")
endfunction()