我需要使用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
没有问题,使用该脚本的红树林可以找到它们:
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)
找不到脚本。
当然,如果我手动从文件名中删除该版本,它可以找到那些文件,但是我想在脚本和芒果方面解决该问题。
关于CMake技术的问题:
是否可以指定(在CMake脚本名称中)find_package
命令自动使用的软件包版本?
答案 0 :(得分:2)
根据find_package文档,该版本嵌入在libmongocxx-config-version.cmake
文件中。
这意味着,如果要获取软件包libmongoc-1.0-config.cmake
,则应使用:
find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)