mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-17 06:37:43 -05:00
If I have a project, which has:
1. /CMakeLists.txt:
```cmake
cmake_minimum_required(VERSION 3.29)
project(test)
include(./cmake/CPM.cmake)
add_subdirectory(subdir)
cpmfindpackage(
NAME
nlohmann_json
VERSION
3.11.2
URL
"https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz"
EXCLUDE_FROM_ALL
ON)
if(NOT TARGET nlohmann_json::nlohmann_json)
message(FATAL_ERROR "BUG")
endif()
```
2. /subdir/CMakeLists.txt
```cmake
cpmfindpackage(
NAME
nlohmann_json
VERSION
3.11.2
URL
"https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz"
EXCLUDE_FROM_ALL
ON)
```
When nlohmann_json is first founded by find_package,
CPM.cmake register this package and later call to CPMFindPackage will
not actually perform a find_package again, which leads to this buggy
behavior.
As CPM write a FindXXX.cmake file for packages added by CPM to pervert
find_package to get local package, I think directly use cpm_find_package
to check if a package is already added is good enough.