LibMongoCxx的正确CMake配置 我正在使用MangGDB C++库3.5.0进行一个项目,并且我很难找出如何正确使用McGux.来包含MangoCxx。
现在,mongocxx包含在CMake中,如下所示:LibMongoCxx的正确CMake配置 我正在使用MangGDB C++库3.5.0进行一个项目,并且我很难找出如何正确使用McGux.来包含MangoCxx。,c++,mongodb,cmake,mongo-cxx-driver,C++,Mongodb,Cmake,Mongo Cxx Driver,现在,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 m
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输出进行分类,同时也因为当前的方法已被弃用
当我使用来自警告find_-package(mongo::mongocxx_-shared REQUIRED)
或find_-package(mongocxx_-shared REQUIRED)
的建议时,我收到一个错误,说明找不到“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_包(mongocxx必需)
,这使得cmake不再抱怨,但是现在变量${LIBMONGOCXX_INCLUDE_DIRS}
和${LIBMONGOCXX_库}
保持为空,因此编译器无法找到INCLUDE
正确的方法是如何包含此库而不出现不推荐的警告
作为参考,这里是我目前使用的完整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})
我相信警告意味着使用
mongo::mongocxx_shared
而不是${LIBMONGOCXX_LIBRARIES}
@drescherjm谢谢,你能告诉我语法吗?这给了我变量名中的无效字符(':'):'mongo'
目标链接库(${PROJECT\u name}mongo::mongocxx\u shared)
而不是目标链接库(${PROJECT\u name}${LIBMONGOCXX\u libraries})
。我可以隔离警告,以确定我是否正在使用find_包(需要libmongocxx)
或find_包(需要mongocxx)
即使其他行包括_目录
和目标链接_库
被注释掉。您可能需要阅读/usr/lib64/cmake/libmongocxx-3.5.0/libmongocxx config.cmake
的第15行以查看更多信息。
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})