From 4064a45552e915143454a7c6a4e26698ad7fd00c Mon Sep 17 00:00:00 2001 From: Lars Melchior Date: Thu, 10 Oct 2019 20:13:10 +0200 Subject: [PATCH] Add CPM_SOURCE_CACHE environmental variable support and keep existing sources (#83) * read CPM_SOURCE_CACHE from environment * update readme * cleanup * add cache tests --- .gitignore | 15 +--- .travis.yml | 18 ++-- README.md | 38 ++++---- cmake/CPM.cmake | 55 +++++++++--- cmake/testing.cmake | 14 ++- examples/benchmark/CMakeLists.txt | 2 + examples/boost/CMakeLists.txt | 2 + examples/{run_all.py => build_all.py} | 2 +- examples/catch2/CMakeLists.txt | 2 + examples/cxxopts/CMakeLists.txt | 2 + examples/doctest/CMakeLists.txt | 2 + examples/entt/CMakeLists.txt | 2 + examples/json/CMakeLists.txt | 2 + examples/linenoise/CMakeLists.txt | 2 + examples/parser-lua/CMakeLists.txt | 2 + examples/parser/CMakeLists.txt | 2 + examples/range-v3/CMakeLists.txt | 2 + examples/simple_match/CMakeLists.txt | 2 + examples/sol2/CMakeLists.txt | 2 + examples/yaml/CMakeLists.txt | 4 +- logo/CPM.afdesign | Bin 20821 -> 26551 bytes logo/CPM.png | Bin 14485 -> 18883 bytes test/CMakeLists.txt | 4 + test/unit/cache.cmake | 125 ++++++++++++++++++++++++++ test/unit/cache/.gitignore | 1 + test/unit/cache/CMakeLists.txt.in | 30 +++++++ test/unit/cache/main.cpp | 13 +++ test/unit/dependency_properties.cmake | 13 ++- 28 files changed, 300 insertions(+), 58 deletions(-) rename examples/{run_all.py => build_all.py} (90%) create mode 100644 test/unit/cache.cmake create mode 100644 test/unit/cache/.gitignore create mode 100644 test/unit/cache/CMakeLists.txt.in create mode 100644 test/unit/cache/main.cpp diff --git a/.gitignore b/.gitignore index 1ce0f6c6..060895d4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,3 @@ -CMakeCache.txt -CMakeFiles -CMakeScripts -Testing -Makefile -cmake_install.cmake -install_manifest.txt -compile_commands.json -CTestTestfile.cmake -build -.vscode -.DS_Store \ No newline at end of file +/build* +/.vscode +*.DS_Store \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index d69cf031..9811ac31 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ - language: cpp sudo: require dist: xenial @@ -17,7 +16,7 @@ matrix: addons: &gcc8 apt: sources: *all_sources - packages: + packages: - g++-8 env: - MATRIX_EVAL="export CC=gcc-8; export CXX=g++-8;" @@ -25,11 +24,11 @@ matrix: - os: linux compiler: clang addons: - apt: - sources: *all_sources - packages: - - g++-8 - - clang-6.0 + apt: + sources: *all_sources + packages: + - g++-8 + - clang-6.0 env: - MATRIX_EVAL="export CC=clang-6.0; export CXX=clang++-6.0;" @@ -38,7 +37,7 @@ before_install: - eval "${MATRIX_EVAL}" - echo "CC=$CC CXX=$CXX" # Install a supported cmake version (>= 3.14) - - wget -O cmake.sh https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh + - wget -O cmake.sh https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh - sudo sh cmake.sh --skip-license --exclude-subdir --prefix=/usr/local - export PATH=/usr/local/bin:$PATH - cmake --version @@ -48,5 +47,4 @@ script: - cmake -Htest -Bbuild/test - CTEST_OUTPUT_ON_FAILURE=1 cmake --build build/test --target test # examples - - python3 examples/run_all.py - \ No newline at end of file + - python3 examples/build_all.py diff --git a/README.md b/README.md index d33f0ac2..dde666af 100644 --- a/README.md +++ b/README.md @@ -50,24 +50,22 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) project(MyProject) # add executable -add_executable(myProject myProject.cpp) -set_target_properties(myProject PROPERTIES CXX_STANDARD 17) +add_executable(tests tests.cpp) # add dependencies include(cmake/CPM.cmake) CPMAddPackage( - NAME LarsParser - VERSION 1.8 - GIT_REPOSITORY https://github.com/TheLartians/Parser.git - OPTIONS - "LARS_PARSER_BUILD_GLUE_EXTENSION ON" + NAME Catch2 + GITHUB_REPOSITORY catchorg/Catch2 + VERSION 2.5.0 ) -target_link_libraries(myProject LarsParser) +# link dependencies +target_link_libraries(tests Catch2) ``` -See the [examples directory](https://github.com/TheLartians/CPM/tree/master/examples) for more examples with source code. +See the [examples directory](https://github.com/TheLartians/CPM/tree/master/examples) for more many examples with source code or the [wiki](https://github.com/TheLartians/CPM/wiki/More-Snippets) for many example snippets. ## Adding CPM @@ -78,36 +76,38 @@ mkdir -p cmake wget -O cmake/CPM.cmake https://raw.githubusercontent.com/TheLartians/CPM/master/cmake/CPM.cmake ``` -You can also use CMake to download CPM for you. See the [wiki](https://github.com/TheLartians/CPM/wiki/Adding-CPM) for more details. +You can even use CMake to download CPM for you. See the [wiki](https://github.com/TheLartians/CPM/wiki/Adding-CPM) for more details. ## Updating CPM -To update CPM to the newest version, simply update the script in the project's cmake directory, for example by running the command above. Dependencies using CPM will automatically use the updated script of the outermost project. +To update CPM to the newest version, update the script in the project's root directory, for example by running the command above. Dependencies using CPM will automatically use the updated script of the outermost project. ## Advantages - **Small and reusable projects** CPM takes care of all project dependencies, allowing developers to focus on creating small, well-tested frameworks. -- **Cross-Platform** CPM adds projects via `add_subdirectory`, which is compatible with all cmake toolchains and generators. +- **Cross-Platform** CPM adds projects via `add_subdirectory`, which is compatible with all CMake toolchains and generators. - **Reproducable builds** By using versioning via git tags it is ensured that a project will always be in the same state everywhere. - **Recursive dependencies** Ensures that no dependency is added twice and is added in the minimum required version. - **Plug-and-play** No need to install anything. Just add the script to your project and you're good to go. - **No packaging required** There is a good chance your existing projects already work as CPM dependencies. -- **Simple source distribution** CPM makes including projects with source files and dependencies easy, reducing the need for monolithic header files. +- **Simple source distribution** CPM makes including projects with source files and dependencies easy, reducing the need for monolithic header files or git submodules. ## Limitations -- **No pre-built binaries** For every new project, all dependencies must be downloaded and built from scratch. A possible workaround is to use CPM to fetch a pre-built binary or to enable local packages (see [below](#local-packages)). +- **No pre-built binaries** For every new build directory, all dependencies are initially downloaded and built from scratch. To avoid extra downloads it is recommend to set the [`CPM_SOURCE_CACHE`](#CPM_SOURCE_CACHE) environmental variable. Using a caching compiler such as [sccahe](https://github.com/mozilla/sccache) can drastically reduce build time. - **Dependent on good CMakeLists** Many libraries do not have CMakeLists that work well for subprojects. Luckily this is slowly changing, however, until then, some manual configuration may be required (see the snippets [below](#snippets)). For best practices on preparing your projects for CPM, see the [wiki](https://github.com/TheLartians/CPM/wiki/Preparing-projects-for-CPM). - **First version used** In diamond-shaped dependency graphs (e.g. `A` depends on `C`@1.1 and `B`, which itself depends on `C`@1.2 the first added dependency will be used (in this case `C`@1.1). In this case, B requires a newer version of `C` than `A`, so CPM will emit an error. This can be resolved by updating the outermost dependency version. For projects with more complex needs and where an extra setup step doesn't matter, it is worth to check out fully featured C++ package managers such as [conan](https://conan.io), [vcpkg](https://github.com/microsoft/vcpkg) or [hunter](https://github.com/ruslo/hunter). -Support for package managers is also [planned](https://github.com/TheLartians/CPM/issues/51) for a future version of CPM. +Support for these package managers is also [planned](https://github.com/TheLartians/CPM/issues/51) for a future version of CPM. ## Options -### CPM_SOURCE_ROOT +### CPM_SOURCE_CACHE -To avoid re-downloading dependencies, configure the project with the cmake option `-DCPM_SOURCE_ROOT=`. +To avoid re-downloading dependencies, CPM has an option `CPM_SOURCE_CACHE` that can be passed to CMake as `-DCPM_SOURCE_CACHE=`. +It can also be defined system-wide as an environmental variable, by adding `export CPM_SOURCE_CACHE=$HOME/.cache/CPM` to your `.bashrc` or `.bash_profile`. +Note that passing the variable as a configure option to CMake will always override the value set by the environmental variable. ### CPM_USE_LOCAL_PACKAGES @@ -158,7 +158,7 @@ CPMAddPackage( CPMAddPackage( NAME yaml-cpp GITHUB_REPOSITORY jbeder/yaml-cpp - # 0.6.2 uses depricated CMake syntax + # 0.6.2 uses deprecated CMake syntax VERSION 0.6.3 # 0.6.3 is not released yet, so use a recent commit GIT_TAG 012269756149ae99745b6dafefd415843d7420bb @@ -247,4 +247,4 @@ For a full example on using CPM to download and configure lua with sol2 see [her ### Full Examples -See the [examples directory](https://github.com/TheLartians/CPM/tree/master/examples) for full examples with source code. +See the [examples directory](https://github.com/TheLartians/CPM/tree/master/examples) for full examples with source code and check out the [wiki](https://github.com/TheLartians/CPM/wiki/More-Snippets) for many more example snippets. diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 51cdbfae..b1f8be1f 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -28,7 +28,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) -set(CURRENT_CPM_VERSION 0.13) +set(CURRENT_CPM_VERSION 0.14) if(CPM_DIRECTORY) if(NOT ${CPM_DIRECTORY} MATCHES ${CMAKE_CURRENT_LIST_DIR}) @@ -46,7 +46,14 @@ set(CPM_DRY_RUN OFF CACHE INTERNAL "Don't download or configure dependencies (fo option(CPM_USE_LOCAL_PACKAGES "Use locally installed packages (find_package)" OFF) option(CPM_LOCAL_PACKAGES_ONLY "Use only locally installed packages" OFF) -set(CPM_SOURCE_ROOT OFF CACHE PATH "Directory to downlaod CPM dependencies") + +if(DEFINED ENV{CPM_SOURCE_CACHE}) + set(CPM_SOURCE_CACHE_DEFAULT $ENV{CPM_SOURCE_CACHE}) +else() + set(CPM_SOURCE_CACHE_DEFAULT OFF) +endif() + +set(CPM_SOURCE_CACHE ${CPM_SOURCE_CACHE_DEFAULT} CACHE PATH "Directory to downlaod CPM dependencies") include(FetchContent) include(CMakeParseArguments) @@ -67,6 +74,7 @@ function(CPMAddPackage) GITHUB_REPOSITORY GITLAB_REPOSITORY SOURCE_DIR + DOWNLOAD_COMMAND ) set(multiValueArgs @@ -105,14 +113,6 @@ function(CPMAddPackage) set(CPM_ARGS_GIT_TAG v${CPM_ARGS_VERSION}) endif() - set(FETCH_CONTENT_DECLARE_EXTRA_OPTS "") - - if (CPM_SOURCE_ROOT AND NOT DEFINED CPM_ARGS_SOURCE_DIR) - string(TOLOWER ${CPM_ARGS_NAME} lname) - string(REPLACE "-" "_" source_path_name ${lname}) - list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS SOURCE_DIR ${CPM_SOURCE_ROOT}/${source_path_name}) - endif() - list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS GIT_TAG ${CPM_ARGS_GIT_TAG}) if(CPM_ARGS_DOWNLOAD_ONLY) @@ -159,7 +159,36 @@ function(CPMAddPackage) endforeach() endif() - CPM_DECLARE_PACKAGE(${CPM_ARGS_NAME} ${CPM_ARGS_VERSION} ${CPM_ARGS_GIT_TAG} "${CPM_ARGS_UNPARSED_ARGUMENTS}" ${FETCH_CONTENT_DECLARE_EXTRA_OPTS}) + set(FETCH_CONTENT_DECLARE_EXTRA_OPTS "") + + if (DEFINED CPM_ARGS_GIT_TAG) + set(PACKAGE_INFO "${CPM_ARGS_GIT_TAG}") + else() + set(PACKAGE_INFO "${CPM_ARGS_VERSION}") + endif() + + if (DEFINED CPM_ARGS_DOWNLOAD_COMMAND) + set(FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND}) + else() + if (CPM_SOURCE_CACHE AND NOT DEFINED CPM_ARGS_SOURCE_DIR) + string(TOLOWER ${CPM_ARGS_NAME} lower_case_name) + set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS}) + list(SORT origin_parameters) + string(SHA1 origin_hash "${origin_parameters}") + set(download_directory ${CPM_SOURCE_CACHE}/${lower_case_name}/${origin_hash}) + list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS SOURCE_DIR ${download_directory}) + if (EXISTS ${download_directory}) + list(APPEND FETCH_CONTENT_DECLARE_EXTRA_OPTS DOWNLOAD_COMMAND ":") + set(PACKAGE_INFO "${download_directory}") + else() + # remove timestamps so CMake will re-download the dependency + file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/_deps/${lower_case_name}-subbuild) + set(PACKAGE_INFO "${PACKAGE_INFO} -> ${download_directory}") + endif() + endif() + endif() + + CPM_DECLARE_PACKAGE(${CPM_ARGS_NAME} ${CPM_ARGS_VERSION} ${PACKAGE_INFO} "${CPM_ARGS_UNPARSED_ARGUMENTS}" ${FETCH_CONTENT_DECLARE_EXTRA_OPTS}) CPM_FETCH_PACKAGE(${CPM_ARGS_NAME} ${DOWNLOAD_ONLY}) CPMGetProperties(${CPM_ARGS_NAME}) SET(${CPM_ARGS_NAME}_SOURCE_DIR "${${CPM_ARGS_NAME}_SOURCE_DIR}" PARENT_SCOPE) @@ -167,8 +196,8 @@ function(CPMAddPackage) SET(${CPM_ARGS_NAME}_ADDED YES PARENT_SCOPE) endfunction() -function (CPM_DECLARE_PACKAGE PACKAGE VERSION GIT_TAG) - message(STATUS "${CPM_INDENT} adding package ${PACKAGE}@${VERSION} (${GIT_TAG})") +function (CPM_DECLARE_PACKAGE PACKAGE VERSION INFO) + message(STATUS "${CPM_INDENT} adding package ${PACKAGE}@${VERSION} (${INFO})") if (${CPM_DRY_RUN}) message(STATUS "${CPM_INDENT} package not declared (dry run)") diff --git a/cmake/testing.cmake b/cmake/testing.cmake index 9dc614e6..5df6a71c 100644 --- a/cmake/testing.cmake +++ b/cmake/testing.cmake @@ -4,7 +4,19 @@ function(ASSERT_EQUAL) message(FATAL_ERROR "assertion failed: invalid argument count: ${ARGC}") endif() - if (NOT ${ARGV0} EQUAL ${ARGV1}) + if (NOT ${ARGV0} STREQUAL ${ARGV1}) message(FATAL_ERROR "assertion failed: '${ARGV0}' != '${ARGV1}'") + else() + message(STATUS "test passed: '${ARGV0}' == '${ARGV1}'") endif() endfunction() + +function(ASSERT_EMPTY) + if (NOT ARGC EQUAL 0) + message(FATAL_ERROR "assertion failed: input ${ARGC} not empty: '${ARGV}'") + endif() +endfunction() + +function(ASSERTION_FAILED) + message(FATAL_ERROR "assertion failed: ${ARGN}") +endfunction() diff --git a/examples/benchmark/CMakeLists.txt b/examples/benchmark/CMakeLists.txt index 2f5b9ee0..7f98b075 100644 --- a/examples/benchmark/CMakeLists.txt +++ b/examples/benchmark/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMExampleBenchmark) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/boost/CMakeLists.txt b/examples/boost/CMakeLists.txt index cfa59ee0..e4a26080 100644 --- a/examples/boost/CMakeLists.txt +++ b/examples/boost/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMExampleBoost) + # ---- Create binary ---- add_executable(CPMExampleBoost main.cpp) diff --git a/examples/run_all.py b/examples/build_all.py similarity index 90% rename from examples/run_all.py rename to examples/build_all.py index 03471a70..eb5f18c4 100644 --- a/examples/run_all.py +++ b/examples/build_all.py @@ -22,7 +22,7 @@ def runCommand(command): print("running example %s" % example.name) print("================" + ('=' * len(example.name))) project = Path(".") / 'build' / example.name - configure = runCommand('cmake -H%s -B%s -DCMAKE_BUILD_TYPE=RelWithDebInfo' % (example, project)) + configure = runCommand('cmake -H%s -B%s' % (example, project)) print(' ' + '\n '.join([line for line in configure.split('\n') if 'CPM:' in line])) build = runCommand('cmake --build %s -j4' % (project)) print(' ' + '\n '.join([line for line in build.split('\n') if 'Built target' in line])) diff --git a/examples/catch2/CMakeLists.txt b/examples/catch2/CMakeLists.txt index 89932cab..cdde8323 100644 --- a/examples/catch2/CMakeLists.txt +++ b/examples/catch2/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMExampleCatch2) + # ---- Options ---- option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF) diff --git a/examples/cxxopts/CMakeLists.txt b/examples/cxxopts/CMakeLists.txt index 14c4617f..b6aee340 100644 --- a/examples/cxxopts/CMakeLists.txt +++ b/examples/cxxopts/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMExampleCXXOpts) + # ---- Options ---- option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF) diff --git a/examples/doctest/CMakeLists.txt b/examples/doctest/CMakeLists.txt index c0c6a343..d2512bd3 100644 --- a/examples/doctest/CMakeLists.txt +++ b/examples/doctest/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMExampleDoctest) + # ---- Options ---- option(ENABLE_TEST_COVERAGE "Enable test coverage" OFF) diff --git a/examples/entt/CMakeLists.txt b/examples/entt/CMakeLists.txt index 5a8f7191..c7206433 100644 --- a/examples/entt/CMakeLists.txt +++ b/examples/entt/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMEnTTExample) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/json/CMakeLists.txt b/examples/json/CMakeLists.txt index b91b9309..93a0759c 100644 --- a/examples/json/CMakeLists.txt +++ b/examples/json/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMJSONExample) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/linenoise/CMakeLists.txt b/examples/linenoise/CMakeLists.txt index 2d529175..d763f7f1 100644 --- a/examples/linenoise/CMakeLists.txt +++ b/examples/linenoise/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMlinenoiseExample) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/parser-lua/CMakeLists.txt b/examples/parser-lua/CMakeLists.txt index 06d8f3a6..2152df35 100644 --- a/examples/parser-lua/CMakeLists.txt +++ b/examples/parser-lua/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) +project(CPMParserLuaExample) + include(../../cmake/CPM.cmake) # ---- Dependencies ---- diff --git a/examples/parser/CMakeLists.txt b/examples/parser/CMakeLists.txt index 2fb49006..10c0a144 100644 --- a/examples/parser/CMakeLists.txt +++ b/examples/parser/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) +project(CPMParserExample) + # add dependencies include(../../cmake/CPM.cmake) diff --git a/examples/range-v3/CMakeLists.txt b/examples/range-v3/CMakeLists.txt index e96b3144..ed9a3a16 100644 --- a/examples/range-v3/CMakeLists.txt +++ b/examples/range-v3/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMRangev3Example) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/simple_match/CMakeLists.txt b/examples/simple_match/CMakeLists.txt index e68f7858..952418dd 100644 --- a/examples/simple_match/CMakeLists.txt +++ b/examples/simple_match/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMSimpleMatchExample) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/sol2/CMakeLists.txt b/examples/sol2/CMakeLists.txt index e8d33fbf..07f8d63b 100644 --- a/examples/sol2/CMakeLists.txt +++ b/examples/sol2/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMSol2Example) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) diff --git a/examples/yaml/CMakeLists.txt b/examples/yaml/CMakeLists.txt index 1237bb18..6e271d0a 100644 --- a/examples/yaml/CMakeLists.txt +++ b/examples/yaml/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project(CPMYamlExample) + # ---- Dependencies ---- include(../../cmake/CPM.cmake) @@ -7,7 +9,7 @@ include(../../cmake/CPM.cmake) CPMAddPackage( NAME yaml-cpp GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git - # 0.6.2 uses depricated CMake syntax + # 0.6.2 uses deprecated CMake syntax VERSION 0.6.3 # 0.6.3 is not released yet, so use the most recent commit GIT_TAG 012269756149ae99745b6dafefd415843d7420bb diff --git a/logo/CPM.afdesign b/logo/CPM.afdesign index 1bd2ad401bd8522164d6c20e7aca6631c1d44eff..f977b7804efd6c231fbadb3fc0bb43977d7df99a 100644 GIT binary patch literal 26551 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 W5H#%ENuOZaZqFK?#}(;2hW!@~W4K2E diff --git a/logo/CPM.png b/logo/CPM.png index 9a576177349a702b9102d8458d029188f0501a79..0c48acc6daeff5491cbed58c0d9c81faccf6708d 100644 GIT binary patch literal 18883 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 literal 14485 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 +#include + +TEST_CASE("fibonnacci"){ + REQUIRE(fibonnacci(0) == 0); + REQUIRE(fibonnacci(1) == 1); + REQUIRE(fibonnacci(2) == 1); + REQUIRE(fibonnacci(3) == 2); + REQUIRE(fibonnacci(4) == 3); + REQUIRE(fibonnacci(5) == 5); +} diff --git a/test/unit/dependency_properties.cmake b/test/unit/dependency_properties.cmake index c1094edc..784eb351 100644 --- a/test/unit/dependency_properties.cmake +++ b/test/unit/dependency_properties.cmake @@ -10,20 +10,31 @@ CPMAddPackage( GIT_TAG 1.2.3 ) +CPMAddPackage( + NAME A + VERSION 1.2.3 +) + CPM_GET_PACKAGE_VERSION(A VERSION) ASSERT_EQUAL(${VERSION} "1.2.3") +CPMAddPackage( + NAME B + VERSION 2.4.1 +) + CPMAddPackage( NAME B GIT_TAG v2.3.1 ) CPM_GET_PACKAGE_VERSION(B VERSION) -ASSERT_EQUAL(${VERSION} "2.3.1") +ASSERT_EQUAL(${VERSION} "2.4.1") CPMAddPackage( NAME C GIT_TAG v3.1.2-a + VERSION 3.1.2 ) CPM_GET_PACKAGE_VERSION(C VERSION)