如何在CMake的用户软件包注册表中支持多个软件包版本?

时间:2018-07-12 17:23:07

标签: cmake

我试图了解如何使用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_VERSIONSfind_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

我在做什么错?应该如何使用用户注册表?

0 个答案:

没有答案