c++ - 与 CMake 链接的 C/C++ 库

标签 c++ c mongodb cmake

我需要在 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类似于 MONGODBMONG我收到这个错误:

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/

相关文章:

c - 在文件夹中查找特定文件并编辑它

node.js - MongoDB将相关的收集项目计数与其他收集结果合并

c# - 如何在 Mongodb 的聚合框架中编写日期范围查询?

c++ - SDL_ttf TTF_OpenFont 返回 NULL

C++ 将成员函数作为回调传递

c - 用C语言将结构写入文件

c - 学习集 : How do I place the asterisks and ampersands on function arguments and function calls?

java - 使用kafka进行oracle到mongodb数据迁移

c++ - 一些代码的解释

c++ - 在函数体中将变量转换为 void 的用法是什么?