我需要在C++项目中使用MongoDB C驱动程序。我想使用CMake,因为我使用的IDE与其集成得很好,但编译器无法识别MongoDB驱动程序。
所以,我尝试了一些其他方法并提供了更多信息。我制作了以下脚本:
当我从CMake文件中删除所有的
所以,我尝试了一些其他方法并提供了更多信息。我制作了以下脚本:
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})
当我从CMake文件中删除所有的
message()
函数并尝试使用未注释的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>
。此外,只是出于好奇,为什么如果我将pkg_search_module
中的MONGO
更改为诸如MONGODB
或MONG
之类的名称,我会收到以下错误:Error:None of the required 'mongoc-1.0' found
。
libmongo1.0>=1.0
看起来很奇怪!如果写成libmongo1.0 >= 1.0
会更好看,当你在 shell 中执行pkg-config libmongo1.0
的时候,请告诉我输出结果。 - Iharob Al Asimipkg-config
调用和 cmake 文件中的不一致! - Iharob Al Asimipkg-config libmongoc-1.0
时,我就没有得到任何输出。 如果我执行pkg-config --cflags --libs libmongoc-1.0
我会得到以下输出-I/usr/include/libmongoc-1.0 -I/usr/include/libbson-1.0 -L/usr/lib64 -lssl -lcrypto -lrt -lmongoc-1.0 -lbson-1.0
- Carlos TeixeiraPKG_SEARCH_MODULE
更改为PKG_SEARCH_MODULE(MONGO_DB REQUIRED libmongoc-1.0)
,以及PKG_SEARCH_MODULE(MONGO_DB REQUIRED libmongoc-1.0 >= 1.0)
。两次都出现了这个错误:fatal error: mongoc.h: No such file or directory #include <mongoc.h>
。 - Carlos Teixeira