c++ - 将 Boost 库添加到 OS X Eclipse 中的 C++ 项目

标签 c++ eclipse macos boost

我一直在尝试使用 eclipse 使用 boost 文件系统库来设置 C++ 项目。我关注了these在我的系统上安装 boost 的说明。方向差不多

  1. 下载
  2. 摘录
  3. 运行 bootstrap.sh
  4. 运行./bjam architecture=combined

这似乎很顺利,没有错误。然后我启动了 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;
}

这只是确保所有设置正确的简单操作。当然,我此时尝试编译,但失败了。做了一些谷歌搜索并找到了this地点。它说通过转到项目属性并添加“boost_filesystem”将boost库添加到链接器。我试过了,但没用。

有人能给我指明正确的方向或给我提示如何在 Eclipse 项目中设置 Boost 吗?

我是 C++ 和 Eclipse 的新手,我的大部分经验是使用 Java 和 Netbeans。所以我现在很迷茫。

更新

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

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

根据 rve 的建议,我将 boost 库的路径添加到库搜索路径中。当这不起作用时。我清除了链接器列表并仅使用库搜索路径进行了尝试。这也没有用。

然后我清除了库搜索路径。然后,我将链接器窗口中的命令手动编辑为“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

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

第二次更新 根据 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

有什么想法吗?

最佳答案

只是想弄清楚什么是真正有效的,因为它是由几个答案拼凑而成的。

  1. 下载 boost 文件并将它们解压缩到您想要放置它们的位置。
  2. 在您的终端导航到目录并运行 ./bootstrap.sh
  3. 完成后运行 ./bjam(这需要一段时间,所以去抽烟,喝杯咖啡)
  4. 打开您的 eclipse 项目并转到“项目”>“属性”>“C/C++ 构建”>“设置”
  5. 单击 MacOS X C++ 链接器 > 库。 您应该会看到一个拆分窗口,顶部是“库 (-l)”。在本节中添加 boost_systemboost_filesystem。在底部,它应该是“库搜索路径(-L)”。在这里,您要将 stage/lib 目录的路径放入您提取 boost 下载的位置。它应该类似于以下内容:alt text
  6. 单击 GCC C++ 编译器 > 包含。这将是一个单一的 Pane ,上面写着“包含路径(-I)”,我认为它是一个 I,因为他的字体很奇怪,也可能是小写的 l。无论如何,在该部分中,将路径添加到没有 stage/lib 部分的 boost 位置。它应该如下所示:alt text

现在一切都应该可以顺利编译,如果您需要使用任何其他 boost 库,只需将它添加到 boost_filesystem 和 boost_system 所在的链接器部分即可。享受吧。

关于c++ - 将 Boost 库添加到 OS X Eclipse 中的 C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435067/

相关文章:

c++ - 二进制表达式中的 GCC 临时常量

C++ 扩展函数?

macos - 为 Cocoa 寻找类似电子表格的控件

java - Mac OS X El Capitan 的 JFrame 需要圆角底角

c++ - 获取具有相同扩展名的文件列表并处理它们

java - Proguard:找不到引用的类

java - 运行 jar 时出现 ClassNotFoundException

java - Eclipse 插件 : how to get the path to the currently selected project

objective-c - 渲染数学公式

c++ - CMAKE_CXX_FLAGS 中的标志 '-l' 不起作用