find_package 在配置脚本名称中具有指定版本
find_package with specified version in configuration script name
我需要在 mongo-c-driver 和 mongo-cxx-driver 上使用 mangrove(mongo ODM 库)并将其作为 CMake [=35] 包含到我的项目中=] 命令,依赖于 mongo-c-driver/mongo-cxx-driver
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)
我需要在 mongo-c-driver 和 mongo-cxx-driver 上使用 mangrove(mongo ODM 库)并将其作为 CMake [=35] 包含到我的项目中=] 命令,依赖于 mongo-c-driver/mongo-cxx-driver
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)