我试图了解如何使用CMake 用户包注册表来支持多个构建,例如调试和发布构建。
我有一个 package1,它可以正确调用,以便它使用 CMake 的用户包注册表export(PACKAGE package1)注册构建目录。然后,我继续创建 2 个单独的构建目录,一个用于调试,一个用于发布(请注意,我将调试构建的版本设为 3.0.2000000,而发布构建的版本为 3.0.1000000,因为我希望 CMake 更喜欢我的用例中的调试版本)。正如预期的那样,每个构建都在注册表中注册了一个项目:
> ls ~/.cmake/packages/package1/
212e973d0f1858e4bdf95b9d105bed5a 78094ed9b729d420c3f782cd8e668e64
Run Code Online (Sandbox Code Playgroud)
现在,我在另一个项目 package2 中使用它,find_package(package1 3.0.740)但它只能在发布版本中找到该项目。我尝试在调用后立即检查package1_CONSIDERED_CONFIGS和,但仍然只有发布版本的配置和版本。package1_CONSIDERED_VERSIONSfind_package
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}")
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?用户注册表应该如何使用?
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |