【问题标题】:Makefile can not find boost libraries installed by macportsMakefile 找不到 macports 安装的 boost 库
【发布时间】:2011-02-13 04:44:26
【问题描述】:

我刚刚使用 sudo port install boost 从 macports 安装了 boost 1.42.0。

一切正常。现在我有一个项目,我正在尝试使用 makefile 构建。一切都很好,直到涉及到需要 boost 库的文件。

上面写着:
src/graph.h:20:42: 错误: boost/graph/adjacency_list.hpp: 没有这样的文件或目录

该文件实际上位于两个地方:
/opt/local/include/boost/graph/adjacency_list.hpp

/opt/local/var/macports/software/boost/1.42.0_0/opt/local/include/boost/graph/adjacency_list.hpp

在查找 boost/graph/adjacency_list.hpp 的文件 src/graph.h 中,包含语句在这里:
#include<boost/graph/adjacency_list.hpp>

我该如何进行这项工作?

【问题讨论】:

    标签: c++ boost linker macports dyld


    【解决方案1】:

    您需要告诉编译器安装 Boost 的基本目录。您可以使用编译器的 -I 命令行选项来做到这一点:

    g++ -I/opt/local/include ...
    

    【讨论】:

    • 有没有办法让所有使用 boost 的未来项目在该路径中自动搜索 /boost?我必须在每个项目中都这样做吗?
    • 成功了,但我还是很好奇。附言对于任何想知道如何在 Mac 上构建 SLAM6D 的人:打开 makefile.options(从 makefile.options.macosx 重命名后)并在底部添加此行以及其他 CFLAGS CFLAGS += -I/opt/local/包括
    • @pinnacler - 你可以做ln -s /opt/local/include/boost /usr/include
    • BOOST_CFLAGS=-Ig++ -I/opt/local/include 就像一个魅力!谢谢!
    【解决方案2】:

    将这些路径之一添加到您的包含路径。

    您可以使用以下 include 包含版本:

    #include <boost/version.hpp>
    

    其中定义:

    #define BOOST_VERSION 104200
    #define BOOST_LIB_VERSION "1_42"
    

    使用它来验证您的编译器是否正在使用您希望它使用的版本。

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多