Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LibMongoCxx的正确CMake配置 我正在使用MangGDB C++库3.5.0进行一个项目,并且我很难找出如何正确使用McGux.来包含MangoCxx。_C++_Mongodb_Cmake_Mongo Cxx Driver - Fatal编程技术网

LibMongoCxx的正确CMake配置 我正在使用MangGDB C++库3.5.0进行一个项目,并且我很难找出如何正确使用McGux.来包含MangoCxx。

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

现在,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输出进行分类,同时也因为当前的方法已被弃用

当我使用来自警告
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})