我需要在 C++ 项目中使用 MongoDB C 驱动程序。我想使用 CMake,因为我使用的 IDE 与它很好地集成,但编译器无法识别 MongoDB 驱动程序
因此,我尝试了更多的方法并为您提供了更多信息。我制作了以下脚本:
cmake_minimum_required(VERSION 3.2)
project(sorting)
set(ENV{PKG_CONFIG_PATH} "/usr/lib64")
find_package(PkgConfig REQUIRED)
pkg_search_module(MONGO REQUIRED mongoc-1.0)
message(SEND_ERROR "A ${MONGO_FOUND}") # Error:A 1
message(SEND_ERROR "B ${MONGO_LIBRARIES}") # Error:B ssl;crypto;rt;mongoc-1.0;bson-1.0
message(SEND_ERROR "C ${MONGO_LIBRARY_DIRS}") # Error:C /usr/lib64
message(SEND_ERROR "D ${MONGO_LDFLAGS}") # Error:D -L/usr/lib64;-lssl;-lcrypto;-lrt;-lmongoc-1.0;-lbson-1.0
message(SEND_ERROR "E ${MONGO_LDFLAGS_OTHER}")# Error:E
message(SEND_ERROR "F ${MONGO_INCLUDE_DIRS}") # Error:F /usr/include/libmongoc-1.0;/usr/include/libbson-1.0
message(SEND_ERROR "G ${MONGO_CFLAGS}") # Error:G -I/usr/include/libmongoc-1.0;-I/usr/include/libbson-1.0
message(SEND_ERROR "H ${MONGO_CFLAGS_OTHER}") # Error:H
include_directories(${MONGO_LIBRARY_DIRS})
include_directories(${MONGO_INCLUDE_DIRS})
#link_directories(${MONGO_LIBRARY_DIRS})
#link_directories(${MONGO_INCLUDE_DIRS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(sorting ${SOURCE_FILES})
target_link_libraries(sorting ${MONGO_LIBRARIES})
当我删除所有 message()
从我的 cmake 文件中获取函数并尝试使用 include_directories
构建运行项目未注释我收到此错误:
error while loading shared libraries: libmongoc-1.0.so.0: cannot open shared object file: No such file or directory
当我评论 include_directories
并取消注释 link_directories
我收到这个错误:
fatal error: mongoc.h: No such file or directory
#include <mongoc.h>
此外,出于好奇,如果我更改名称 MONGO
为什么会这样?在pkg_search_module
类似于 MONGODB
或 MONG
我收到这个错误:
Error:None of the required 'mongoc-1.0' found
最佳答案
你需要告诉cmake链接到monog库,这是通过
TARGET_LINK_LIBRARIES
命令,在您的特定情况下,它会紧跟在 ADD_EXECUTABLE
命令之后,就像
TARGET_LINK_LIBRARIES(sorting ${MONGO_DB_LIBRARIES})
还有,你的PKG_SEARCH_MODULE
好像不对,看来应该是
PKG_SEARCH_MODULE(MONGO_DB REQUIRED libmongoc-1.0)
关于c++ - 与 CMake 链接的 C/C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881925/