gpt4 book ai didi

c++ - 在配置脚本名称中使用指定版本的 find_package

转载 作者:行者123 更新时间:2023-11-30 03:19:09 26 4
gpt4 key购买 nike

我需要使用 mangrove(基于 mongo-c-driver 和 mongo-cxx-driver 的 mongo ODM 库)并将其作为 CMake ExternalProject_Add 命令包含到我的项目中,依赖于 mongo-c-driver/mongo-cxx-司机

mongocxx 生成名称如下的 CMake 配置脚本:

libmongocxx-config.cmake

libmongocxx-config-version.cmake

使用该脚本通过 mangrove 找到这些没有问题:

set(LIBMONGOCXX_REQUIRED_VERSION 3.1.3)
set(LIBMONGOCXX_REQUIRED_ABI_VERSION v_noabi)
find_package(libmongocxx ${LIBMONGOCXX_REQUIRED_VERSION} REQUIRED)

然而,mongo-c-driver 生成的脚本名称将 ABI 版本包含在文件名中。

libmongoc-1.0-config.cmake

libmongoc-1.0-config-version.cmake

和类似的 CMake 代码:

set(LIBMONGOC_REQUIRED_VERSION 1.7.0)
set(LIBMONGOC_REQUIRED_ABI_VERSION 1.0)
find_package(LibMongoC ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)

找不到脚本。

当然,如果我手动从文件名中删除版本,它可以找到那些文件,但我想在脚本和 mangove 端解决这个问题。

关于 CMake 技术的问题:

是否可以指定(在 CMake 脚本名称中)find_package 命令自动使用的包版本来查找?

最佳答案

根据 find_package文档,版本嵌入在 libmongocxx-config-version.cmake 文件中。

这意味着如果你想获取包 libmongoc-1.0-config.cmake,你应该使用:

find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)

关于c++ - 在配置脚本名称中使用指定版本的 find_package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com