微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LibMongoCxx 的正确 CMake 配置

如何解决LibMongoCxx 的正确 CMake 配置

我正在使用 MongoDB C++ 库 3.5.0 处理一个项目,但我无法弄清楚如何使用 CMake 正确包含 mongocxx。

现在 mongocxx 包含在 CMake 中,如下所示:

find_package(libmongocxx required)
include_directories(${libmONGOCXX_INCLUDE_Dirs})
target_link_libraries(${PROJECT_NAME} ${libmONGOCXX_LIBRARIES})

这对于构建我的最小示例很有效:

// main.cpp:
#include <mongocxx/instance.hpp>

int main()
{
    mongocxx::instance instance{};
}

但是,在运行 CMake 时,我收到以下警告:

CMake Warning at /usr/lib64/cmake/libmongocxx-3.5.0/libmongocxx-config.cmake:15 (message):
  This CMake target is deprecated.  Use 'mongo::mongocxx_shared' instead.
  Consult the example projects for further details.
Call Stack (most recent call first):
  CMakeLists.txt:16 (find_package)

我想摆脱这个来整理我的 CMake 输出,也因为当前的方式已被弃用。

当我使用警告 find_package(mongo::mongocxx_shared required)find_package(mongocxx_shared required) 中的建议时,我收到一个错误说明 Could not find a package configuration file provided by "mongocxx_shared"。查看可用的内容,我看到:

[georg@archlinux build]$ locate mongo | grep cxx | grep .cmake
/usr/include/mongocxx/v_noabi/mongocxx/cmake
/usr/lib/cmake/libmongocxx-3.5.0
/usr/lib/cmake/mongocxx-3.5.0
/usr/lib/cmake/libmongocxx-3.5.0/libmongocxx-config-version.cmake
/usr/lib/cmake/libmongocxx-3.5.0/libmongocxx-config.cmake
/usr/lib/cmake/mongocxx-3.5.0/mongocxx-config-version.cmake
/usr/lib/cmake/mongocxx-3.5.0/mongocxx-config.cmake
/usr/lib/cmake/mongocxx-3.5.0/mongocxx_targets-release.cmake
/usr/lib/cmake/mongocxx-3.5.0/mongocxx_targets.cmake

mongocxx-config.cmake 存在,因此我尝试了 find_package(mongocxx required) 这使得 CMake 不再抱怨,但是现在变量 ${libmONGOCXX_INCLUDE_Dirs}${libmONGOCXX_LIBRARIES} 保持为空并且编译器无法找到包含作为后果。

在不遇到已弃用警告的情况下包含此库的正确方法是什么?

这里是我目前使用的完整 CMake 文件作为参考:

cmake_minimum_required(VERSION 3.14)

project(
    test
    VERSION 0.1.0
)

add_executable(${PROJECT_NAME}
    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
)

find_package(libmongocxx required)
find_package(mongocxx required)

include_directories(${libmONGOCXX_INCLUDE_Dirs})

target_link_libraries(${PROJECT_NAME} ${libmONGOCXX_LIBRARIES})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。