我试图了解如何使用CMake user package registry支持多种构建,例如Debug和Release构建。
我有一个package1,它可以正确调用export(PACKAGE package1)
,因此它在CMake的user package registry中注册了构建目录。然后,我继续创建2个单独的构建目录,一个用于Debug,一个用于Release(请注意,我为Debug构建3.0.2000000创建了版本,而Release发行版本为3.0.1000000,因为我希望CMake更喜欢我的用例中的Debug版本)。不出所料,这些构建中的每一个都在注册表中注册了一个项目:
> ls ~/.cmake/packages/package1/
212e973d0f1858e4bdf95b9d105bed5a 78094ed9b729d420c3f782cd8e668e64
现在在另一个项目package2中,我使用find_package(package1 3.0.740)
,但它只能在Release版本中找到它。我尝试在调用package1_CONSIDERED_CONFIGS
之后立即检查package1_CONSIDERED_VERSIONS
和find_package
,但同样仅存在Release版本的配置和版本。
package2的CMakeLists.txt文件中的代码:
SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
message("CMAKE_FIND_PACKAGE_SORT_ORDER="
"${CMAKE_FIND_PACKAGE_SORT_ORDER}")
message("CMAKE_FIND_PACKAGE_SORT_DIRECTION="
${CMAKE_FIND_PACKAGE_SORT_DIRECTION}")
find_package(package1 3.0.740)
message("Considered Configs: ${package1_CONSIDERED_CONFIGS}")
message("Considered Versions: ${package1_CONSIDERED_VERSIONS}")
CMake运行以上代码的结果:
cmake ../..
-- Using link pool size - 16 jobs
CMAKE_FIND_PACKAGE_SORT_ORDER=NATURAL
CMAKE_FIND_PACKAGE_SORT_DIRECTION=DEC
Considered Configs: /path/to/package1/Release/package1Config.cmake
Considered Versions: 3.0.1000000
我在做什么错?应该如何使用用户注册表?