Add package lock (#121)

* add package lock creation

* change target name

* fix cpm_export_variables

* add test

* fix git repo detection addition

* remove test package lock from git

* add link to package lock wiki

* add CPMGetPackage
This commit is contained in:
Lars Melchior
2020-05-27 19:07:06 +02:00
committed by GitHub
parent 58365446f5
commit 4aeea1d31d
8 changed files with 175 additions and 40 deletions

View File

@@ -6,7 +6,7 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/modules)
function(initProjectWithDependency TEST_DEPENDENCY_NAME)
configure_package_config_file(
"${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/test_project/ModuleCMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt"
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk
)

View File

@@ -0,0 +1,48 @@
include(CMakePackageConfigHelpers)
include(${CPM_PATH}/testing.cmake)
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/package-lock)
function(configureWithDeclare DECLARE_DEPENDENCY)
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf ${TEST_BUILD_DIR})
if (DECLARE_DEPENDENCY)
set(PREPARE_CODE "CPMDeclarePackage(Dependency
NAME Dependency
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/test_project/dependency
)")
else()
set(PREPARE_CODE "")
endif()
configure_package_config_file(
"${CMAKE_CURRENT_LIST_DIR}/test_project/PackageLockCMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt"
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk
)
execute_process(
COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/test_project -B${TEST_BUILD_DIR}
RESULT_VARIABLE ret
)
ASSERT_EQUAL(${ret} "0")
endfunction()
function(updatePackageLock)
execute_process(
COMMAND ${CMAKE_COMMAND} --build ${TEST_BUILD_DIR} --target cpm-update-package-lock
RESULT_VARIABLE ret
)
ASSERT_EQUAL(${ret} "0")
endfunction()
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake)
configureWithDeclare(YES)
ASSERT_NOT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake)
updatePackageLock()
ASSERT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/test_project/package-lock.cmake)
configureWithDeclare(NO)

View File

@@ -7,7 +7,7 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/source_dir)
set(TEST_DEPENDENCY_NAME Dependency)
configure_package_config_file(
"${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/test_project/ModuleCMakeLists.txt.in"
"${CMAKE_CURRENT_LIST_DIR}/test_project/CMakeLists.txt"
INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/junk
)

View File

@@ -1 +1,2 @@
/CMakeLists.txt
/CMakeLists.txt
/package-lock.cmake

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project(CPMExampleCatch2)
project(CPMTest)
# ---- Options ----

View File

@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project(CPMTest)
# ---- Options ----
option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF)
# ---- Dependencies ----
include(@CPM_PATH@/CPM.cmake)
CPMUsePackageLock(package-lock.cmake)
@PREPARE_CODE@
CPMGetPackage(Dependency)
# ---- Call dependency method to validate correct addition of directory ----
dependency_function()