在OS X上构建和安装MongoDB C++驱动程序

4

我已经从http://dl.mongodb.org/dl/cxx-driver下载了最新版的MongoDB C++驱动程序,并在OS X终端使用tar xvf命令解压缩。然后,我运行scons来构建驱动程序。构建成功,并显示以下消息:

-- some messages --
ranlib build/libmongoclient.a
ranlib: file: build/libmongoclient.a(backtrace.o) has no symbols
ranlib: file: build/libmongoclient.a(posix_fadvise.o) has no symbols
ranlib: file: build/libmongoclient.a(ssl_manager.o) has no symbols
Install file: "build/libmongoclient.a" as "libmongoclient.a"
scons: done building targets.

因此,我运行命令“scons install”将库安装到我的计算机中。
--some messages --
scons: done reading SConscript files.
scons: Building targets ...
scons: `install' is up to date.
scons: done building targets.

当我在/usr/local目录中检查libmongoclient库时,它不在那里。 但在我提取的mongoDB驱动程序文件夹中,有一个名为“libmongoclient.a”的文件。 但是没有扩展名为“.dylib”的文件。那么我如何使用mongoDB Xcode和gcc C ++? 有人帮我从Xcode链接到“libmongoclient”库。


你不需要先构建C驱动程序吗?这是我在Github的构建说明中看到的内容:“C++驱动程序在内部使用libbson和MongoDB C驱动程序。如果尚未安装libbson,则C驱动程序将安装它。”此链接是从mongodb-dot-org的C++ MongoDB Driver页面(https://docs.mongodb.org/getting-started/cpp/client/#compile-the-driver)引导的。我问的原因是:我在Cygwin上安装C时卡住了,与WINSOCK有关。不想详细说明并演变成一个单独的问题,但不想创建新问题,因为已经有重复的问题了。 - Luv2code
你是指C驱动程序还是C++驱动程序?两者略有不同,对吧? - Kaje
你如何理解我上面的引述?我理解为我需要安装C驱动程序,因为C++驱动程序在内部使用它。此外,我没有libbson,所以我需要构建C驱动程序来创建它。 - Luv2code
1
是的,在 Github 页面上有。但我没有构建 C 驱动程序。我直接从源代码构建了 C++ 驱动程序,因为源代码是自包含的。 - Kaje
1个回答

3

我需要一些时间才能让这个工作起来。 希望您可以通过以下步骤使您的工作正常:

在Xcode中创建一个新的C++项目

我从<mongo_driver_install>/src/mongo/client/examples/tutorial.cpp复制了代码作为测试。

在构建设置/搜索路径中:

搜索路径的截图

将以下内容添加到您的Header Search Paths中:

/path/to/mongo-cxx-driver-nightly/src

以及您的Boost库头文件的等效路径(该文件夹应包含一个boost文件夹):

/usr/local/Cellar/boost/1.54.0/include

将以下内容添加到您的库搜索路径中:

/usr/local/lib (in my case holds all of the boost libraries)
/path/to/mongo-cxx-driver-nightly

链接二进制文件

构建阶段/链接二进制库设置中:

构建阶段屏幕截图

添加以下二进制文件:

/path/to/mongo-cxx-driver-nightly/libmongoclient.a
/usr/local/lib/libboost_thread-mt.dylib
/usr/local/lib/libboost_system-mt.dylib
/usr/local/lib/libboost_filesystem-mt.dylib
/usr/local/lib/libboost_program_options-mt.dylib

我还需要添加/usr/local/lib/libboost_regex-mt.dylib - Clay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接