From 80356ae05860ee3bdb3e82caf7a9e8ed7287dd0e Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 06:03:21 -0700 Subject: [PATCH 01/26] add tests of the CMake package and pkgconfig --- .github/workflows/tests.yml | 19 +++++ tests/CMakeLists.txt | 95 +++++++++++++++++++++++ tests/find_package_tests/CMakeLists.txt | 16 ++++ tests/package_config_tests/CMakeLists.txt | 19 +++++ 4 files changed, 149 insertions(+) create mode 100644 tests/find_package_tests/CMakeLists.txt create mode 100644 tests/package_config_tests/CMakeLists.txt diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fe2aca700..b790b0416 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -138,6 +138,25 @@ jobs: - name: Build run: meson compile -C build-meson + + install-test: + name: install tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + #- name: Add pkgconfig + # run: sudo apt-get update && sudo apt-get install -y pkgconfig + - name: Configure + run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON + - name: Build + run: cmake --build build -j2 + - name: install + run: cmake --install build + - name: Run tests + run: ctest --output-on-failure + working-directory: build cmake-config-ubuntu-2004: name: CMake config check (Ubuntu 20.04) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f771aadc2..9d1161765 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -277,3 +277,98 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) ${CLI11_TESTS} ${CLI11_MULTIONLY_TESTS}) endif() + + +if(CLI11_INSTALL_PACKAGE_TESTS) + set(CLI11_PACKAGE_SEARCH_LOC) +else() + set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") +endif() + +# tests of the cmake package and pkg-config package +if (CLI11_INSTALL_PACKAGE_TESTS) +if(NOT MSVC) + set(package_test_command --test-command "${CMAKE_CTEST_COMMAND}") +else() # don't try to run the tests on MSVC since that would require copying the dll's and doing + # some other setup that isn't that important to run on all OS + set(package_test_command) +endif() + +if(CMAKE_BUILD_TYPE) + set(CLI11_PACKAGE_TEST_BUILD_TYPE ${CMAKE_BUILD_TYPE}) +else() + set(CLI11_PACKAGE_TEST_BUILD_TYPE Release) +endif() + +file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") + +if(MSVC AND ${CMAKE_VERSION} VERSION_GREATER 3.12.9) + # Tests for other CMake projects including and using CLI11 using find_package + add_test( + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" + ${CLI11_PACKAGE_SEARCH_LOC} + "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" + ) +else() + add_test( + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} + "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" + ) +endif() + +add_test(NAME find-package-testsB + COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" --config + ${CLI11_PACKAGE_TEST_BUILD_TYPE} +) + +add_test(NAME find-package-testsC COMMAND ${CMAKE_CTEST_COMMAND} -C + ${CLI11_PACKAGE_TEST_BUILD_TYPE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" +) +set_property(TEST find-package-testsA PROPERTY LABELS Packaging PackagingFast) +set_property(TEST find-package-testsB PROPERTY LABELS Packaging PackagingFast) +set_property(TEST find-package-testsB PROPERTY DEPENDS find-package-testsA) +set_property(TEST find-package-testsC PROPERTY LABELS Packaging PackagingFast) +set_property(TEST find-package-testsC PROPERTY DEPENDS find-package-testsB) + +cmake_dependent_advanced_option( + CLI11_ENABLE_SUBPROJECT_TESTS + "Enable tests of using CLI11 as a subproject, potentially a slow tests" OFF + "CLI11_BUILD_TESTS" OFF +) + +if(NOT MSVC) + # Tests for other CMake projects using the package_config files + add_test( + package-config-tests + ${CMAKE_CTEST_COMMAND} + -C + ${CLI11_PACKAGE_TEST_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" + "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" + --build-generator + "${CMAKE_GENERATOR}" + --build-generator-platform + "${CMAKE_GENERATOR_PLATFORM}" + --build-options + "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + ${package_test_command} + ) + set_property(TEST package-config-tests PROPERTY LABELS Packaging) +endif() +endif() diff --git a/tests/find_package_tests/CMakeLists.txt b/tests/find_package_tests/CMakeLists.txt new file mode 100644 index 000000000..6da637374 --- /dev/null +++ b/tests/find_package_tests/CMakeLists.txt @@ -0,0 +1,16 @@ + +cmake_minimum_required(VERSION 3.10...3.26) + +project(CLI11-find-package-test) + +include(CTest) + +# Test the CLI11 CMake package config +find_package(CLI11 2.0 REQUIRED) + +# Test the target + add_executable(package-test ../../examples/positional_validation.cpp) + target_link_libraries(package-test CLI11::CLI11) + + add_test(NAME package-test1 COMMAND package-test one) + set_property(TEST package-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") diff --git a/tests/package_config_tests/CMakeLists.txt b/tests/package_config_tests/CMakeLists.txt new file mode 100644 index 000000000..dee2c94ec --- /dev/null +++ b/tests/package_config_tests/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.10...3.26) + +project(CLI11-package-config-test) + +include(CTest) + +# Test the CLI11 CMake package config +find_package(CLI11 2.0 REQUIRED) + +find_package(PkgConfig) + +pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET cli11) + +# Test the target + add_executable(package-config-test ../../examples/positional_validation.cpp) + target_link_libraries(package-config-test PkgConfig::CLI11) + + add_test(NAME package-config-test1 COMMAND package-config-test one) + set_property(TEST package-config-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") \ No newline at end of file From c3cec5f687a1049ce457689b3ee09cb55c16e140 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 13:05:28 +0000 Subject: [PATCH 02/26] style: pre-commit.ci fixes --- tests/CMakeLists.txt | 135 ++++++++++------------ tests/find_package_tests/CMakeLists.txt | 9 +- tests/package_config_tests/CMakeLists.txt | 8 +- 3 files changed, 72 insertions(+), 80 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9d1161765..6a690ba25 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -278,97 +278,90 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) ${CLI11_MULTIONLY_TESTS}) endif() - if(CLI11_INSTALL_PACKAGE_TESTS) - set(CLI11_PACKAGE_SEARCH_LOC) + set(CLI11_PACKAGE_SEARCH_LOC) else() - set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") + set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") endif() # tests of the cmake package and pkg-config package -if (CLI11_INSTALL_PACKAGE_TESTS) -if(NOT MSVC) +if(CLI11_INSTALL_PACKAGE_TESTS) + if(NOT MSVC) set(package_test_command --test-command "${CMAKE_CTEST_COMMAND}") -else() # don't try to run the tests on MSVC since that would require copying the dll's and doing - # some other setup that isn't that important to run on all OS + else() # don't try to run the tests on MSVC since that would require copying the dll's and doing + # some other setup that isn't that important to run on all OS set(package_test_command) -endif() + endif() -if(CMAKE_BUILD_TYPE) + if(CMAKE_BUILD_TYPE) set(CLI11_PACKAGE_TEST_BUILD_TYPE ${CMAKE_BUILD_TYPE}) -else() + else() set(CLI11_PACKAGE_TEST_BUILD_TYPE Release) -endif() + endif() -file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") -if(MSVC AND ${CMAKE_VERSION} VERSION_GREATER 3.12.9) + if(MSVC AND ${CMAKE_VERSION} VERSION_GREATER 3.12.9) # Tests for other CMake projects including and using CLI11 using find_package add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" - ${CLI11_PACKAGE_SEARCH_LOC} - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" - ) -else() + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" + ${CLI11_PACKAGE_SEARCH_LOC} "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") + else() add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" - ) -endif() + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} + "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") + endif() -add_test(NAME find-package-testsB - COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" --config - ${CLI11_PACKAGE_TEST_BUILD_TYPE} -) - -add_test(NAME find-package-testsC COMMAND ${CMAKE_CTEST_COMMAND} -C - ${CLI11_PACKAGE_TEST_BUILD_TYPE} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" -) -set_property(TEST find-package-testsA PROPERTY LABELS Packaging PackagingFast) -set_property(TEST find-package-testsB PROPERTY LABELS Packaging PackagingFast) -set_property(TEST find-package-testsB PROPERTY DEPENDS find-package-testsA) -set_property(TEST find-package-testsC PROPERTY LABELS Packaging PackagingFast) -set_property(TEST find-package-testsC PROPERTY DEPENDS find-package-testsB) - -cmake_dependent_advanced_option( + add_test(NAME find-package-testsB + COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests" + --config ${CLI11_PACKAGE_TEST_BUILD_TYPE}) + + add_test( + NAME find-package-testsC + COMMAND ${CMAKE_CTEST_COMMAND} -C ${CLI11_PACKAGE_TEST_BUILD_TYPE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") + set_property(TEST find-package-testsA PROPERTY LABELS Packaging PackagingFast) + set_property(TEST find-package-testsB PROPERTY LABELS Packaging PackagingFast) + set_property(TEST find-package-testsB PROPERTY DEPENDS find-package-testsA) + set_property(TEST find-package-testsC PROPERTY LABELS Packaging PackagingFast) + set_property(TEST find-package-testsC PROPERTY DEPENDS find-package-testsB) + + cmake_dependent_advanced_option( CLI11_ENABLE_SUBPROJECT_TESTS "Enable tests of using CLI11 as a subproject, potentially a slow tests" OFF - "CLI11_BUILD_TESTS" OFF -) + "CLI11_BUILD_TESTS" OFF) -if(NOT MSVC) + if(NOT MSVC) # Tests for other CMake projects using the package_config files add_test( - package-config-tests - ${CMAKE_CTEST_COMMAND} - -C - ${CLI11_PACKAGE_TEST_BUILD_TYPE} - --build-and-test - "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" - "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" - --build-generator - "${CMAKE_GENERATOR}" - --build-generator-platform - "${CMAKE_GENERATOR_PLATFORM}" - --build-options - "-DCLI11_VERSION=${CLI11_VERSION}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - ${package_test_command} - ) + package-config-tests + ${CMAKE_CTEST_COMMAND} + -C + ${CLI11_PACKAGE_TEST_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" + "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" + --build-generator + "${CMAKE_GENERATOR}" + --build-generator-platform + "${CMAKE_GENERATOR_PLATFORM}" + --build-options + "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + ${package_test_command}) set_property(TEST package-config-tests PROPERTY LABELS Packaging) -endif() + endif() endif() diff --git a/tests/find_package_tests/CMakeLists.txt b/tests/find_package_tests/CMakeLists.txt index 6da637374..8ac68d9e1 100644 --- a/tests/find_package_tests/CMakeLists.txt +++ b/tests/find_package_tests/CMakeLists.txt @@ -1,4 +1,3 @@ - cmake_minimum_required(VERSION 3.10...3.26) project(CLI11-find-package-test) @@ -9,8 +8,8 @@ include(CTest) find_package(CLI11 2.0 REQUIRED) # Test the target - add_executable(package-test ../../examples/positional_validation.cpp) - target_link_libraries(package-test CLI11::CLI11) +add_executable(package-test ../../examples/positional_validation.cpp) +target_link_libraries(package-test CLI11::CLI11) - add_test(NAME package-test1 COMMAND package-test one) - set_property(TEST package-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") +add_test(NAME package-test1 COMMAND package-test one) +set_property(TEST package-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") diff --git a/tests/package_config_tests/CMakeLists.txt b/tests/package_config_tests/CMakeLists.txt index dee2c94ec..8b1831d91 100644 --- a/tests/package_config_tests/CMakeLists.txt +++ b/tests/package_config_tests/CMakeLists.txt @@ -12,8 +12,8 @@ find_package(PkgConfig) pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET cli11) # Test the target - add_executable(package-config-test ../../examples/positional_validation.cpp) - target_link_libraries(package-config-test PkgConfig::CLI11) +add_executable(package-config-test ../../examples/positional_validation.cpp) +target_link_libraries(package-config-test PkgConfig::CLI11) - add_test(NAME package-config-test1 COMMAND package-config-test one) - set_property(TEST package-config-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") \ No newline at end of file +add_test(NAME package-config-test1 COMMAND package-config-test one) +set_property(TEST package-config-test1 PROPERTY PASS_REGULAR_EXPRESSION "File 1 = one") From bac5352affab2badaeae125d7531d390c7a3cb07 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 06:17:39 -0700 Subject: [PATCH 03/26] remove extraneous option --- tests/CMakeLists.txt | 65 ++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6a690ba25..7893cea32 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -279,9 +279,9 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) endif() if(CLI11_INSTALL_PACKAGE_TESTS) - set(CLI11_PACKAGE_SEARCH_LOC) + set(CLI11_PACKAGE_SEARCH_LOC) else() - set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") + set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") endif() # tests of the cmake package and pkg-config package @@ -289,7 +289,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) if(NOT MSVC) set(package_test_command --test-command "${CMAKE_CTEST_COMMAND}") else() # don't try to run the tests on MSVC since that would require copying the dll's and doing - # some other setup that isn't that important to run on all OS + # some other setup that isn't that important to run on all OS set(package_test_command) endif() @@ -304,23 +304,23 @@ if(CLI11_INSTALL_PACKAGE_TESTS) if(MSVC AND ${CMAKE_VERSION} VERSION_GREATER 3.12.9) # Tests for other CMake projects including and using CLI11 using find_package add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" ${CLI11_PACKAGE_SEARCH_LOC} "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") else() add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} + "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") endif() @@ -338,29 +338,24 @@ if(CLI11_INSTALL_PACKAGE_TESTS) set_property(TEST find-package-testsC PROPERTY LABELS Packaging PackagingFast) set_property(TEST find-package-testsC PROPERTY DEPENDS find-package-testsB) - cmake_dependent_advanced_option( - CLI11_ENABLE_SUBPROJECT_TESTS - "Enable tests of using CLI11 as a subproject, potentially a slow tests" OFF - "CLI11_BUILD_TESTS" OFF) - if(NOT MSVC) # Tests for other CMake projects using the package_config files add_test( - package-config-tests - ${CMAKE_CTEST_COMMAND} - -C - ${CLI11_PACKAGE_TEST_BUILD_TYPE} - --build-and-test - "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" - "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" - --build-generator - "${CMAKE_GENERATOR}" - --build-generator-platform - "${CMAKE_GENERATOR_PLATFORM}" - --build-options - "-DCLI11_VERSION=${CLI11_VERSION}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + package-config-tests + ${CMAKE_CTEST_COMMAND} + -C + ${CLI11_PACKAGE_TEST_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" + "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" + --build-generator + "${CMAKE_GENERATOR}" + --build-generator-platform + "${CMAKE_GENERATOR_PLATFORM}" + --build-options + "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" ${package_test_command}) set_property(TEST package-config-tests PROPERTY LABELS Packaging) endif() From bf484d6fe3cf34789ee70046133f10180836fcb6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 13:21:14 +0000 Subject: [PATCH 04/26] style: pre-commit.ci fixes --- tests/CMakeLists.txt | 60 ++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7893cea32..ef92ca6ff 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -279,9 +279,9 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) endif() if(CLI11_INSTALL_PACKAGE_TESTS) - set(CLI11_PACKAGE_SEARCH_LOC) + set(CLI11_PACKAGE_SEARCH_LOC) else() - set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") + set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") endif() # tests of the cmake package and pkg-config package @@ -289,7 +289,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) if(NOT MSVC) set(package_test_command --test-command "${CMAKE_CTEST_COMMAND}") else() # don't try to run the tests on MSVC since that would require copying the dll's and doing - # some other setup that isn't that important to run on all OS + # some other setup that isn't that important to run on all OS set(package_test_command) endif() @@ -304,23 +304,23 @@ if(CLI11_INSTALL_PACKAGE_TESTS) if(MSVC AND ${CMAKE_VERSION} VERSION_GREATER 3.12.9) # Tests for other CMake projects including and using CLI11 using find_package add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" ${CLI11_PACKAGE_SEARCH_LOC} "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") else() add_test( - NAME find-package-testsA - COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" - "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" - "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" + NAME find-package-testsA + COMMAND + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} + "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" + "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") endif() @@ -341,21 +341,21 @@ if(CLI11_INSTALL_PACKAGE_TESTS) if(NOT MSVC) # Tests for other CMake projects using the package_config files add_test( - package-config-tests - ${CMAKE_CTEST_COMMAND} - -C - ${CLI11_PACKAGE_TEST_BUILD_TYPE} - --build-and-test - "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" - "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" - --build-generator - "${CMAKE_GENERATOR}" - --build-generator-platform - "${CMAKE_GENERATOR_PLATFORM}" - --build-options - "-DCLI11_VERSION=${CLI11_VERSION}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + package-config-tests + ${CMAKE_CTEST_COMMAND} + -C + ${CLI11_PACKAGE_TEST_BUILD_TYPE} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" + "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" + --build-generator + "${CMAKE_GENERATOR}" + --build-generator-platform + "${CMAKE_GENERATOR_PLATFORM}" + --build-options + "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" ${package_test_command}) set_property(TEST package-config-tests PROPERTY LABELS Packaging) endif() From 6b5dba4aee57123a63c5e14dc351ab96098d287c Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 07:15:00 -0700 Subject: [PATCH 05/26] tweak the workflows --- .github/workflows/tests.yml | 2 +- tests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b790b0416..298d088ad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -149,7 +149,7 @@ jobs: #- name: Add pkgconfig # run: sudo apt-get update && sudo apt-get install -y pkgconfig - name: Configure - run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON + run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON -DCMAKE_INSTALL_PREFIX=/home/runner/work/install - name: Build run: cmake --build build -j2 - name: install diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ef92ca6ff..0dbba3d4d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -281,7 +281,7 @@ endif() if(CLI11_INSTALL_PACKAGE_TESTS) set(CLI11_PACKAGE_SEARCH_LOC) else() - set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${PROJECT_BINARY_DIR}") + set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}") endif() # tests of the cmake package and pkg-config package From 70f3e84d76f790b663ebba4fc9983806aa59ecea Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 07:45:45 -0700 Subject: [PATCH 06/26] add in addition find paths --- tests/find_package_tests/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/find_package_tests/CMakeLists.txt b/tests/find_package_tests/CMakeLists.txt index 8ac68d9e1..756fb60ed 100644 --- a/tests/find_package_tests/CMakeLists.txt +++ b/tests/find_package_tests/CMakeLists.txt @@ -4,6 +4,10 @@ project(CLI11-find-package-test) include(CTest) +if (CLI11_DIR) + set(CMAKE_PREFIX_PATH ${CLI11_DIR}) +endif() + # Test the CLI11 CMake package config find_package(CLI11 2.0 REQUIRED) From 0d0c043afaf8242cadad55dc7060d41d8f7bd126 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 14:46:05 +0000 Subject: [PATCH 07/26] style: pre-commit.ci fixes --- tests/find_package_tests/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/find_package_tests/CMakeLists.txt b/tests/find_package_tests/CMakeLists.txt index 756fb60ed..6d5aa2775 100644 --- a/tests/find_package_tests/CMakeLists.txt +++ b/tests/find_package_tests/CMakeLists.txt @@ -4,8 +4,8 @@ project(CLI11-find-package-test) include(CTest) -if (CLI11_DIR) - set(CMAKE_PREFIX_PATH ${CLI11_DIR}) +if(CLI11_DIR) + set(CMAKE_PREFIX_PATH ${CLI11_DIR}) endif() # Test the CLI11 CMake package config From 13120111854d31d45a3ae5d5398ac1529a88daab Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 08:15:32 -0700 Subject: [PATCH 08/26] tweak the directory lists --- tests/CMakeLists.txt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0dbba3d4d..b8443728b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -278,11 +278,8 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) ${CLI11_MULTIONLY_TESTS}) endif() -if(CLI11_INSTALL_PACKAGE_TESTS) - set(CLI11_PACKAGE_SEARCH_LOC) -else() - set(CLI11_PACKAGE_SEARCH_LOC "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}") -endif() + + set(CLI11_PACKAGE_SEARCH_LOC "") # tests of the cmake package and pkg-config package if(CLI11_INSTALL_PACKAGE_TESTS) @@ -307,7 +304,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) NAME find-package-testsA COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" - ${CLI11_PACKAGE_SEARCH_LOC} "-DCLI11_VERSION=${CLI11_VERSION}" + "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" @@ -316,8 +313,8 @@ if(CLI11_INSTALL_PACKAGE_TESTS) add_test( NAME find-package-testsA COMMAND - ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ${CLI11_PACKAGE_SEARCH_LOC} - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" From f9a2158b8860106af71f9ed3f94d763806312bdd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 15:17:15 +0000 Subject: [PATCH 09/26] style: pre-commit.ci fixes --- tests/CMakeLists.txt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b8443728b..eb3488a41 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -278,8 +278,7 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage) ${CLI11_MULTIONLY_TESTS}) endif() - - set(CLI11_PACKAGE_SEARCH_LOC "") +set(CLI11_PACKAGE_SEARCH_LOC "") # tests of the cmake package and pkg-config package if(CLI11_INSTALL_PACKAGE_TESTS) @@ -304,8 +303,8 @@ if(CLI11_INSTALL_PACKAGE_TESTS) NAME find-package-testsA COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -A "${CMAKE_GENERATOR_PLATFORM}" - "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" + "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") @@ -314,8 +313,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) NAME find-package-testsA COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" - "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" - "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" "${CMAKE_CURRENT_SOURCE_DIR}/find_package_tests" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") From f88fa6e900e2a8808ed62353e110db9b127a36f8 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 10:51:14 -0700 Subject: [PATCH 10/26] update the package_config_tests --- tests/CMakeLists.txt | 3 +-- tests/package_config_tests/CMakeLists.txt | 9 +++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eb3488a41..022f6b6f2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -339,7 +339,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) package-config-tests ${CMAKE_CTEST_COMMAND} -C - ${CLI11_PACKAGE_TEST_BUILD_TYPE} + "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" @@ -348,7 +348,6 @@ if(CLI11_INSTALL_PACKAGE_TESTS) --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" --build-options - "-DCLI11_VERSION=${CLI11_VERSION}" "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" ${package_test_command}) diff --git a/tests/package_config_tests/CMakeLists.txt b/tests/package_config_tests/CMakeLists.txt index 8b1831d91..1ea182b7d 100644 --- a/tests/package_config_tests/CMakeLists.txt +++ b/tests/package_config_tests/CMakeLists.txt @@ -4,12 +4,13 @@ project(CLI11-package-config-test) include(CTest) -# Test the CLI11 CMake package config -find_package(CLI11 2.0 REQUIRED) - find_package(PkgConfig) -pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET cli11) +if(CLI11_DIR) + set(CMAKE_PREFIX_PATH ${CLI11_DIR}) +endif() + +pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET CLI11) # Test the target add_executable(package-config-test ../../examples/positional_validation.cpp) From 796c28389ec664dcbd99b90b2b2e93d4341f0666 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 11:52:13 -0700 Subject: [PATCH 11/26] install package config to correct location --- cmake/CLI11GeneratePkgConfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CLI11GeneratePkgConfig.cmake b/cmake/CLI11GeneratePkgConfig.cmake index 5abb03d16..ed30a5a20 100644 --- a/cmake/CLI11GeneratePkgConfig.cmake +++ b/cmake/CLI11GeneratePkgConfig.cmake @@ -1,3 +1,3 @@ configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) -install(FILES "${PROJECT_BINARY_DIR}/CLI11.pc" DESTINATION "${CMAKE_INSTALL_DATADIR}/pkgconfig") +install(FILES "${PROJECT_BINARY_DIR}/CLI11.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") From 89a923203e0766ef9749b4980777f914019b25bb Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 12:10:56 -0700 Subject: [PATCH 12/26] add debug output to cmake --- tests/package_config_tests/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/package_config_tests/CMakeLists.txt b/tests/package_config_tests/CMakeLists.txt index 1ea182b7d..8dde1ef6f 100644 --- a/tests/package_config_tests/CMakeLists.txt +++ b/tests/package_config_tests/CMakeLists.txt @@ -7,10 +7,11 @@ include(CTest) find_package(PkgConfig) if(CLI11_DIR) - set(CMAKE_PREFIX_PATH ${CLI11_DIR}) + set(CMAKE_PREFIX_PATH ${CLI11_DIR} ${CLI11_DIR}/lib) endif() -pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET CLI11) +message(STATUS "${CLI11_DIR}-- ${CMAKE_PREFIX_PATH}") +pkg_check_modules(cli11 REQUIRED IMPORTED_TARGET CLI11) # Test the target add_executable(package-config-test ../../examples/positional_validation.cpp) From eab3fd28e83871a70b89a4b556776a6930c623ee Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 12:16:06 -0700 Subject: [PATCH 13/26] reorder cmake calls --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 022f6b6f2..2b70abd6e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -339,7 +339,6 @@ if(CLI11_INSTALL_PACKAGE_TESTS) package-config-tests ${CMAKE_CTEST_COMMAND} -C - "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/package_config_tests" "${CMAKE_CURRENT_BINARY_DIR}/package_config_tests" @@ -350,6 +349,7 @@ if(CLI11_INSTALL_PACKAGE_TESTS) --build-options "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" + "-DCLI11_DIR=${CMAKE_INSTALL_PREFIX}" ${package_test_command}) set_property(TEST package-config-tests PROPERTY LABELS Packaging) endif() From 39142e726702112883792427031f02f22b7366c5 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 12:32:23 -0700 Subject: [PATCH 14/26] try again --- tests/package_config_tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/package_config_tests/CMakeLists.txt b/tests/package_config_tests/CMakeLists.txt index 8dde1ef6f..a775e8cfe 100644 --- a/tests/package_config_tests/CMakeLists.txt +++ b/tests/package_config_tests/CMakeLists.txt @@ -11,7 +11,7 @@ if(CLI11_DIR) endif() message(STATUS "${CLI11_DIR}-- ${CMAKE_PREFIX_PATH}") -pkg_check_modules(cli11 REQUIRED IMPORTED_TARGET CLI11) +pkg_check_modules(CLI11 REQUIRED IMPORTED_TARGET CLI11) # Test the target add_executable(package-config-test ../../examples/positional_validation.cpp) From fb9a268bee379fde72bd4dd8f738ba07c98bd32a Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 15 Aug 2023 13:31:14 -0700 Subject: [PATCH 15/26] add precompiled package tests --- .github/workflows/tests.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 298d088ad..2b7e31c94 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -146,8 +146,6 @@ jobs: - uses: actions/checkout@v3 with: submodules: true - #- name: Add pkgconfig - # run: sudo apt-get update && sudo apt-get install -y pkgconfig - name: Configure run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON -DCMAKE_INSTALL_PREFIX=/home/runner/work/install - name: Build @@ -157,6 +155,23 @@ jobs: - name: Run tests run: ctest --output-on-failure working-directory: build + + install-test-precompiled: + name: install tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Configure + run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON -DCMAKE_INSTALL_PREFIX=/home/runner/work/install -DCLI11_PRECOMPILED=ON + - name: Build + run: cmake --build build -j2 + - name: install + run: cmake --install build + - name: Run tests + run: ctest --output-on-failure + working-directory: build cmake-config-ubuntu-2004: name: CMake config check (Ubuntu 20.04) From 4aacecf2a17158e53946cb6f7e9dd2c1eed6614c Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 04:50:26 -0700 Subject: [PATCH 16/26] fix incorrect cmake variable in install section --- .github/workflows/tests.yml | 2 +- src/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2b7e31c94..3ea328484 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -157,7 +157,7 @@ jobs: working-directory: build install-test-precompiled: - name: install tests + name: install tests precompiled runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4f7af6ad1..b5d105f46 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -129,7 +129,7 @@ if(CLI11_INSTALL) if(NOT CLI11_SINGLE_FILE) install(FILES ${CLI11_headers} ${CLI11_library_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CLI") - if(NOT CLI11_COMPILE) + if(NOT CLI11_PRECOMPILED) install(FILES ${CLI11_impl_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CLI/impl") endif() endif() From 5bb3c90bd6cfb606bda9c94150ab6d23e664e2db Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 05:10:01 -0700 Subject: [PATCH 17/26] add preconfig files for precompiled library --- cmake/CLI11GeneratePkgConfig.cmake | 6 ++++++ cmake/CLI11precompiled.pc.in | 11 +++++++++++ cmake/CLI11single.in | 9 +++++++++ 3 files changed, 26 insertions(+) create mode 100644 cmake/CLI11precompiled.pc.in create mode 100644 cmake/CLI11single.in diff --git a/cmake/CLI11GeneratePkgConfig.cmake b/cmake/CLI11GeneratePkgConfig.cmake index ed30a5a20..b695f671c 100644 --- a/cmake/CLI11GeneratePkgConfig.cmake +++ b/cmake/CLI11GeneratePkgConfig.cmake @@ -1,3 +1,9 @@ +if (CLI11_PRECOMPILED) configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) +elseif (CLI11_SINGLE_FILE) +configure_file("cmake/CLI11single.pc.in" "CLI11.pc" @ONLY) +else() +configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) +endif() install(FILES "${PROJECT_BINARY_DIR}/CLI11.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/cmake/CLI11precompiled.pc.in b/cmake/CLI11precompiled.pc.in new file mode 100644 index 000000000..b223d96c2 --- /dev/null +++ b/cmake/CLI11precompiled.pc.in @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: CLI11 +Description: C++ command line parser +Version: @PROJECT_VERSION@ + +Cflags: -I${includedir} -DCLI11_COMPILE +Libs: -L${libdir} -lCLI11 \ No newline at end of file diff --git a/cmake/CLI11single.in b/cmake/CLI11single.in new file mode 100644 index 000000000..8d418739d --- /dev/null +++ b/cmake/CLI11single.in @@ -0,0 +1,9 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include + +Name: CLI11 +Description: C++ command line parser +Version: @PROJECT_VERSION@ + +Cflags: -I${includedir} From 7f32799efb65ff171b0198f08bea8197116fac01 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 17 Aug 2023 12:13:36 +0000 Subject: [PATCH 18/26] style: pre-commit.ci fixes --- cmake/CLI11GeneratePkgConfig.cmake | 10 +++++----- cmake/CLI11precompiled.pc.in | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/CLI11GeneratePkgConfig.cmake b/cmake/CLI11GeneratePkgConfig.cmake index b695f671c..83d4380e1 100644 --- a/cmake/CLI11GeneratePkgConfig.cmake +++ b/cmake/CLI11GeneratePkgConfig.cmake @@ -1,9 +1,9 @@ -if (CLI11_PRECOMPILED) -configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) -elseif (CLI11_SINGLE_FILE) -configure_file("cmake/CLI11single.pc.in" "CLI11.pc" @ONLY) +if(CLI11_PRECOMPILED) + configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) +elseif(CLI11_SINGLE_FILE) + configure_file("cmake/CLI11single.pc.in" "CLI11.pc" @ONLY) else() -configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) + configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) endif() install(FILES "${PROJECT_BINARY_DIR}/CLI11.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/cmake/CLI11precompiled.pc.in b/cmake/CLI11precompiled.pc.in index b223d96c2..df73d7780 100644 --- a/cmake/CLI11precompiled.pc.in +++ b/cmake/CLI11precompiled.pc.in @@ -8,4 +8,4 @@ Description: C++ command line parser Version: @PROJECT_VERSION@ Cflags: -I${includedir} -DCLI11_COMPILE -Libs: -L${libdir} -lCLI11 \ No newline at end of file +Libs: -L${libdir} -lCLI11 From cedfc7c2e5171e07d163f1babb9ac53bf41fdcbc Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 05:23:20 -0700 Subject: [PATCH 19/26] filter the ctest workflow --- .github/workflows/tests.yml | 2 +- cmake/{CLI11single.in => CLI11single.pc.in} | 0 tests/CMakeLists.txt | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) rename cmake/{CLI11single.in => CLI11single.pc.in} (100%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3ea328484..a86465d06 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -170,7 +170,7 @@ jobs: - name: install run: cmake --install build - name: Run tests - run: ctest --output-on-failure + run: ctest --output-on-failure -L Packaging working-directory: build cmake-config-ubuntu-2004: diff --git a/cmake/CLI11single.in b/cmake/CLI11single.pc.in similarity index 100% rename from cmake/CLI11single.in rename to cmake/CLI11single.pc.in diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2b70abd6e..5618e6cfa 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -327,10 +327,10 @@ if(CLI11_INSTALL_PACKAGE_TESTS) NAME find-package-testsC COMMAND ${CMAKE_CTEST_COMMAND} -C ${CLI11_PACKAGE_TEST_BUILD_TYPE} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/find_package_tests") - set_property(TEST find-package-testsA PROPERTY LABELS Packaging PackagingFast) - set_property(TEST find-package-testsB PROPERTY LABELS Packaging PackagingFast) + set_property(TEST find-package-testsA PROPERTY LABELS Packaging) + set_property(TEST find-package-testsB PROPERTY LABELS Packaging) set_property(TEST find-package-testsB PROPERTY DEPENDS find-package-testsA) - set_property(TEST find-package-testsC PROPERTY LABELS Packaging PackagingFast) + set_property(TEST find-package-testsC PROPERTY LABELS Packaging) set_property(TEST find-package-testsC PROPERTY DEPENDS find-package-testsB) if(NOT MSVC) From ff96dc2b24d5e9f21a5611a4bc63e57d11d5f701 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 05:38:52 -0700 Subject: [PATCH 20/26] fix the template file condition --- cmake/CLI11GeneratePkgConfig.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CLI11GeneratePkgConfig.cmake b/cmake/CLI11GeneratePkgConfig.cmake index 83d4380e1..e01eea05e 100644 --- a/cmake/CLI11GeneratePkgConfig.cmake +++ b/cmake/CLI11GeneratePkgConfig.cmake @@ -1,9 +1,9 @@ if(CLI11_PRECOMPILED) - configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) + configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) elseif(CLI11_SINGLE_FILE) configure_file("cmake/CLI11single.pc.in" "CLI11.pc" @ONLY) else() - configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) + configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) endif() install(FILES "${PROJECT_BINARY_DIR}/CLI11.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") From 7453e29dfbdbd6e73f6089f0fd3c9b5c82f32881 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 06:18:21 -0700 Subject: [PATCH 21/26] add single file install test --- .github/workflows/tests.yml | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a86465d06..6fac1ec08 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -139,7 +139,7 @@ jobs: - name: Build run: meson compile -C build-meson - install-test: + install: name: install tests runs-on: ubuntu-latest steps: @@ -153,10 +153,10 @@ jobs: - name: install run: cmake --install build - name: Run tests - run: ctest --output-on-failure + run: ctest --output-on-failure -L Packaging working-directory: build - install-test-precompiled: + install-precompiled: name: install tests precompiled runs-on: ubuntu-latest steps: @@ -172,6 +172,23 @@ jobs: - name: Run tests run: ctest --output-on-failure -L Packaging working-directory: build + + install-single_file: + name: install tests single file + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Configure + run: cmake -S . -B build -DCLI11_INSTALL_PACKAGE_TESTS=ON -DCMAKE_INSTALL_PREFIX=/home/runner/work/install -DCLI11_SINGLE_FILE=ON + - name: Build + run: cmake --build build -j2 + - name: install + run: cmake --install build + - name: Run tests + run: ctest --output-on-failure -L Packaging + working-directory: build cmake-config-ubuntu-2004: name: CMake config check (Ubuntu 20.04) From b1199a5e7642cdbf35bf923510b4596f8766c086 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 16:35:31 -0700 Subject: [PATCH 22/26] add a header for single file include so it has a CLI/CLI.hpp file just like the regular one that references the CLI11.hpp single file header --- .github/workflows/tests.yml | 2 +- cmake/CLIsingle.hpp.in | 11 +++++++++++ src/CMakeLists.txt | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 cmake/CLIsingle.hpp.in diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6fac1ec08..48d5dd660 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -35,7 +35,7 @@ jobs: cmake -S . -B build \ -DCMAKE_CXX_STANDARD=${{matrix.std}} \ -DCLI11_SINGLE_FILE_TESTS=OFF \ - -DCLI11_EXAMPLES=OFF \ + -DCLI11_BUILD_EXAMPLES=OFF \ -DCLI11_PRECOMPILED=${{matrix.precompile}} \ -DCMAKE_BUILD_TYPE=Coverage diff --git a/cmake/CLIsingle.hpp.in b/cmake/CLIsingle.hpp.in new file mode 100644 index 000000000..745d47223 --- /dev/null +++ b/cmake/CLIsingle.hpp.in @@ -0,0 +1,11 @@ +// Copyright (c) 2017-2023, University of Cincinnati, developed by Henry Schreiner +// under NSF AWARD 1414736 and by the respective contributors. +// All rights reserved. +// +// SPDX-License-Identifier: BSD-3-Clause + +#pragma once + +//single file header +#include + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b5d105f46..77f7d4aca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -112,6 +112,8 @@ if(CLI11_SINGLE_FILE) if(CLI11_INSTALL) install(FILES "${PROJECT_BINARY_DIR}/include/CLI11.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + configure_file("cmake/CLIsingle.hpp.in" "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) + install(FILES "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CLI) endif() add_library(CLI11_SINGLE INTERFACE) target_link_libraries(CLI11_SINGLE INTERFACE CLI11) From 1ccc25f26048d8f1bdb6f0bab3ff35d9f41f16fa Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 17 Aug 2023 23:35:51 +0000 Subject: [PATCH 23/26] style: pre-commit.ci fixes --- cmake/CLIsingle.hpp.in | 1 - src/CMakeLists.txt | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CLIsingle.hpp.in b/cmake/CLIsingle.hpp.in index 745d47223..6fcf1bb4a 100644 --- a/cmake/CLIsingle.hpp.in +++ b/cmake/CLIsingle.hpp.in @@ -8,4 +8,3 @@ //single file header #include - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 77f7d4aca..61cf7cf24 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -113,7 +113,8 @@ if(CLI11_SINGLE_FILE) install(FILES "${PROJECT_BINARY_DIR}/include/CLI11.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) configure_file("cmake/CLIsingle.hpp.in" "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) - install(FILES "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CLI) + install(FILES "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CLI) endif() add_library(CLI11_SINGLE INTERFACE) target_link_libraries(CLI11_SINGLE INTERFACE CLI11) From 81974a5fb002e97169f8103dd5799835945b18f9 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 16:39:12 -0700 Subject: [PATCH 24/26] fix configure location --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 61cf7cf24..c1e32f8df 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -112,7 +112,7 @@ if(CLI11_SINGLE_FILE) if(CLI11_INSTALL) install(FILES "${PROJECT_BINARY_DIR}/include/CLI11.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - configure_file("cmake/CLIsingle.hpp.in" "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) + configure_file("${CLI11_SOURCE_DIR}/cmake/CLIsingle.hpp.in" "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CLI) endif() From 757f0e0ce4662890c95b6ac412263420a3dfd63c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 17 Aug 2023 23:48:10 +0000 Subject: [PATCH 25/26] style: pre-commit.ci fixes --- cmake/CLIsingle.hpp.in | 2 +- src/CMakeLists.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/CLIsingle.hpp.in b/cmake/CLIsingle.hpp.in index 6fcf1bb4a..862e115ba 100644 --- a/cmake/CLIsingle.hpp.in +++ b/cmake/CLIsingle.hpp.in @@ -7,4 +7,4 @@ #pragma once //single file header -#include +#include "../CLI11.hpp" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c1e32f8df..f62c895c2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -112,7 +112,8 @@ if(CLI11_SINGLE_FILE) if(CLI11_INSTALL) install(FILES "${PROJECT_BINARY_DIR}/include/CLI11.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - configure_file("${CLI11_SOURCE_DIR}/cmake/CLIsingle.hpp.in" "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) + configure_file("${CLI11_SOURCE_DIR}/cmake/CLIsingle.hpp.in" + "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/include/CLI/CLI.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/CLI) endif() From 1cb75471863bb364038de3a5ef8b596694945990 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 17 Aug 2023 19:59:58 -0700 Subject: [PATCH 26/26] simplify to single pc file for single_file and normal --- cmake/CLI11GeneratePkgConfig.cmake | 2 -- cmake/CLI11single.pc.in | 9 --------- 2 files changed, 11 deletions(-) delete mode 100644 cmake/CLI11single.pc.in diff --git a/cmake/CLI11GeneratePkgConfig.cmake b/cmake/CLI11GeneratePkgConfig.cmake index e01eea05e..a9c5eb885 100644 --- a/cmake/CLI11GeneratePkgConfig.cmake +++ b/cmake/CLI11GeneratePkgConfig.cmake @@ -1,7 +1,5 @@ if(CLI11_PRECOMPILED) configure_file("cmake/CLI11precompiled.pc.in" "CLI11.pc" @ONLY) -elseif(CLI11_SINGLE_FILE) - configure_file("cmake/CLI11single.pc.in" "CLI11.pc" @ONLY) else() configure_file("cmake/CLI11.pc.in" "CLI11.pc" @ONLY) endif() diff --git a/cmake/CLI11single.pc.in b/cmake/CLI11single.pc.in deleted file mode 100644 index 8d418739d..000000000 --- a/cmake/CLI11single.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=${prefix} -includedir=${prefix}/include - -Name: CLI11 -Description: C++ command line parser -Version: @PROJECT_VERSION@ - -Cflags: -I${includedir}