在OS X Eclipse中将Boost库添加到C++项目中

Jac*_*oen 9 c++ eclipse macos boost

我一直在尝试使用eclipse使用boost文件系统库来设置C++项目.我按照这些指示在我的系统上安装了boost.相当的方向

  1. 下载
  2. 提取
  3. 运行bootstrap.sh
  4. 运行./bjam架构=组合

这似乎很好,没有错误.然后我启动了eclipse并创建了一个名为test的新测试项目,其中包含一个名为test.cpp的文件.其中的代码是:

#include <stdio.h>
#include <boost/filesystem.hpp>

int main() {
    boost::filesystem::path path("/Users/schoen"); // random pathname
    bool result = boost::filesystem::is_directory(path);
    printf("Path is a directory : %d\n", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这只是一些简单的事情,以确保它都正确设置.当然我在这一点上试图编译它失败了.做了一些谷歌搜索,发现这个网站.它说通过转到项目属性并添加"boost_filesystem"将boost库添加到链接器.我试过这个,好吧它没用.

有人能指出我正确的方向还是给我一个如何在Eclipse项目中设置Boost的提示?

我是C++和Eclipse的新手,我的大部分经验都是使用Netbeans的Java.所以此刻我很迷茫.

UPDATE

我只想根据给出的答案更新我尝试过的内容.

根据Alex的建议,我将boost_system和boost_filesystem添加到链接器列表中.我仍然得到相同的编译器错误.

根据rve的建议,我将增强库的路径添加到了库搜索路径.当这不起作用.我清除了链接器列表并仅使用库搜索路径进行了尝试.这也行不通.

然后我清除了库搜索路径.然后,我在链接器窗口上手动编辑命令为'g ++ -L/Users/jacobschoen/Library/boost_1_45_0/stage/lib -lboost -lboost_filesystem'.这也行不通.

在所有这些中,我尝试将boost的路径设置为'/ Users/jacobschoen/Library/boost_1_45_0'和'/ Users/jacobschoen/Library/boost_1_45_0/stage/lib'.都没有奏效.

根据要求,上述代码的编译器错误是:

**** Build of configuration Debug for project test ****

make all 
Building file: ../src/test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o"src/test.o" "../src/test.cpp"
../src/test.cpp:10:32: warning: boost/filesystem.hpp: No such file or directory
../src/test.cpp: In function 'int main()':
../src/test.cpp:13: error: 'boost' has not been declared
../src/test.cpp:13: error: expected `;' before 'path'
../src/test.cpp:14: error: 'boost' has not been declared
../src/test.cpp:14: error: 'path' was not declared in this scope
make: *** [src/test.o] Error 1
Run Code Online (Sandbox Code Playgroud)

如果有人有任何进一步的建议,我仍在尝试.

第二次更新 根据rholmes的建议,我添加了一个包含库以及链接器列表和库搜索路径.所以现在编译错误是:

**** Build of configuration Debug for project test ****

make all 
Building target: test
Invoking: MacOS X C++ Linker
g++ -L/Users/jacobschoen/Library/boost_1_45_0 -o "test"  ./src/test.o   -lboost_system -lboost_filesystem
ld: library not found for -lboost_system
collect2: ld returned 1 exit status
make: *** [test] Error 1
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jac*_*oen 16

只是想明确一下实际工作的内容,因为它是从几个答案拼凑而成的.

  1. 下载boost文件并将其解压缩到您想要放置的位置.
  2. 在终端中导航到目录并运行 ./bootstrap.sh
  3. 完成后运行./bjam(这需要一段时间,所以去吸烟喝一杯咖啡)
  4. 打开你的eclipse项目,进入Project> Properties> C/C++ Build> Settings
  5. 单击MacOS X C++链接器>库.你应该看到一个分割窗口,顶部是'Libraries(-l)'.在本节中添加两个boost_systemboost_filesystem.在底部,它应该是'图书馆搜索路径(-L)'.在这里,您希望将路径/ stage目录放在提取boost下载的位置.它应该类似于下面的内容:替代文字
  6. 单击GCC C++编译器>包含.这将是一个单独的窗格,其中显示"包含路径(-I)",我认为这是一个我,因为他的字体很奇怪,也可能是一个小写l.无论如何,在该部分中添加没有stage/lib部分的放置boost的路径.它应该如下所示:替代文字

现在一切都应该编译出来并解决问题,如果你需要使用任何其他的boost库,那么只需将它添加到boost_filesystem和boost_system所在的链接器部分即可.请享用.


rho*_*mes 4

现在不确定您在 Eclipse 中的何处执行此操作,但在 Eclipse 的包含路径下应该是主 boost 目录的路径(/Users/jacobschoen/Library/boost_1_45_0?)。我认为编译器行应该包含如下内容:

调用:GCC C++ 编译器

g++ -I/Users/jacobschoen/Library/boost_1_45_0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD (等..)

更新:看看我的系统,你的链接器路径可能更合适:

-I/用户/jacobschoen/库/boost_1_45_0/stage/lib

当然,这取决于您如何安装和构建 boost——这是我最近尝试的完整源代码构建。根据您获得提升的方式,这可能会有所不同,也可能不会有所不同。我最近在 64 位 Mac 上重新进行了增强,但还没有太多时间尝试......