配置脚本名称中具有指定版本的find_package
find_package with specified version in configuration script name
我需要使用mangrove(mongo-c-driver和mongo-cxx驱动程序之上的mongo-ODM lib),并将其作为CMake-ExternalProject_Add命令包含在我的项目中,并依赖于mongo-c-deriver/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配置.cmake
libmongoc-1.0配置版本.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
命令将自动使用的包的版本?
根据find_package文档,该版本嵌入在libmongocxx-config-version.cmake
文件中。
这意味着,如果你想获得包libmongoc-1.0-config.cmake
,你应该使用:
find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- 错误"Could not find Boost"(缺少:上下文标头)
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- "find"的递归版本和非递归版本有什么区别?