From c6d8892e5d1bac2803b53063fe3e3c23efe46574 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 6 Mar 2022 15:33:05 +0100 Subject: [PATCH] FetchContent_MakeAvailable (#3351) * :wrench: use FetchContent_MakeAvailable * :green_heart: fix test names --- README.md | 11 ++-------- doc/mkdocs/docs/integration/cmake.md | 11 ++-------- test/CMakeLists.txt | 1 + test/cmake_fetch_content2/CMakeLists.txt | 20 +++++++++++++++++++ .../project/CMakeLists.txt | 15 ++++++++++++++ test/cmake_fetch_content2/project/main.cpp | 8 ++++++++ 6 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 test/cmake_fetch_content2/CMakeLists.txt create mode 100644 test/cmake_fetch_content2/project/CMakeLists.txt create mode 100644 test/cmake_fetch_content2/project/main.cpp diff --git a/README.md b/README.md index 89676cf371..c6babb64ed 100644 --- a/README.md +++ b/README.md @@ -1191,15 +1191,8 @@ Example: ```cmake include(FetchContent) -FetchContent_Declare(json - URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz -) - -FetchContent_GetProperties(json) -if(NOT json_POPULATED) - FetchContent_Populate(json) - add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL) -endif() +FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz) +FetchContent_MakeAvailable(json) target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) ``` diff --git a/doc/mkdocs/docs/integration/cmake.md b/doc/mkdocs/docs/integration/cmake.md index dbb8c2d660..2247ba0097 100644 --- a/doc/mkdocs/docs/integration/cmake.md +++ b/doc/mkdocs/docs/integration/cmake.md @@ -100,15 +100,8 @@ automatically download a release as a dependency at configure type. include(FetchContent) - FetchContent_Declare(json - URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz - ) - - FetchContent_GetProperties(json) - if(NOT json_POPULATED) - FetchContent_Populate(json) - add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL) - endif() + FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.10.5/json.tar.xz) + FetchContent_MakeAvailable(json) add_executable(example example.cpp) target_link_libraries(example PRIVATE nlohmann_json::nlohmann_json) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 4c741f2743..c296621349 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -170,4 +170,5 @@ endif() add_subdirectory(cmake_add_subdirectory) add_subdirectory(cmake_fetch_content) +add_subdirectory(cmake_fetch_content2) add_subdirectory(cmake_target_include_directories) diff --git a/test/cmake_fetch_content2/CMakeLists.txt b/test/cmake_fetch_content2/CMakeLists.txt new file mode 100644 index 0000000000..40e75e832e --- /dev/null +++ b/test/cmake_fetch_content2/CMakeLists.txt @@ -0,0 +1,20 @@ +if (${CMAKE_VERSION} VERSION_GREATER "3.14.0") + add_test(NAME cmake_fetch_content2_configure + COMMAND ${CMAKE_COMMAND} + -G "${CMAKE_GENERATOR}" + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -Dnlohmann_json_source=${PROJECT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/project + ) + add_test(NAME cmake_fetch_content2_build + COMMAND ${CMAKE_COMMAND} --build . + ) + set_tests_properties(cmake_fetch_content2_configure PROPERTIES + FIXTURES_SETUP cmake_fetch_content2 + LABELS "git_required;not_reproducible" + ) + set_tests_properties(cmake_fetch_content2_build PROPERTIES + FIXTURES_REQUIRED cmake_fetch_content2 + LABELS "git_required;not_reproducible" + ) +endif() diff --git a/test/cmake_fetch_content2/project/CMakeLists.txt b/test/cmake_fetch_content2/project/CMakeLists.txt new file mode 100644 index 0000000000..734b9cc0ed --- /dev/null +++ b/test/cmake_fetch_content2/project/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.14) + +project(DummyImport CXX) + +include(FetchContent) + +get_filename_component(GIT_REPOSITORY_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../.. ABSOLUTE) +FetchContent_Declare(json GIT_REPOSITORY ${GIT_REPOSITORY_DIRECTORY} GIT_TAG HEAD) +FetchContent_MakeAvailable(json) + +add_executable(with_namespace_target main.cpp) +target_link_libraries(with_namespace_target nlohmann_json::nlohmann_json) + +add_executable(without_namespace_target main.cpp) +target_link_libraries(without_namespace_target nlohmann_json) diff --git a/test/cmake_fetch_content2/project/main.cpp b/test/cmake_fetch_content2/project/main.cpp new file mode 100644 index 0000000000..d2d118b854 --- /dev/null +++ b/test/cmake_fetch_content2/project/main.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc, char **argv) +{ + nlohmann::json j; + + return 0; +}