3

我安装了 boost v.1.51.0 并且目录“boost_1_51_0”位于“/home/user1/boost/”下。要安装,我只是将 tar 文件解压缩到“/home/user1/boost/”中。我在 MinGW 上使用 C++ 编译器。

现在,我正在尝试将库包含在代码中。到目前为止我试过

#include </home/user1/boost/boost_1_51_0/libs/unordered/test/objects/test.hpp>  
#include </home/user1/boost/boost_1_51_0/test.hpp>
#include </home/user1/boost/test.hpp>
#include <boost/test.hpp>

和其他一些人一起。我什至尝试将“/home/user1/boost/”的 Windows 位置添加到路径中。

我错过了一些东西。

4

3 回答 3

3

您需要使用命令行参数向编译器提供包含目录,例如-I/home/user1/boost/boost_1_51_0.

您可能还想将 boost 实际安装到系统目录;有关详细信息,请参见http://www.boost.org/doc/libs/1_51_0/doc/html/bbv2/installation.html

于 2012-08-26T03:51:11.327 回答
3

使用文档中指定的包含boost内容(通常按照<boost/test.hpp>上面示例的行)。但是适当地设置你的CPPPATH/ CXXFLAGS(构建环境)。对于MinGW,您需要添加-I/home/user1/boost/boost_1_51_0/.

于 2012-08-26T03:51:44.663 回答
3
#include </home/user1/boost/boost_1_51_0/libs/unordered/test/objects/test.hpp>  

这是行不通的。可能会找到该文件,但随后它将尝试包含其他文件,例如<boost/config.hpp>在您的包含路径中找不到的文件。

#include </home/user1/boost/boost_1_51_0/test.hpp>
                                         ^^^^^^^^

这是行不通的,因为文件不在那个位置!如果你运行ls /home/user1/boost/boost_1_51_0/test.hpp你会得到一个错误,因为那个文件不存在。

#include </home/user1/boost/test.hpp>
                            ^^^^^^^^

这里同样的问题。

无论如何,将绝对路径放在#include指令中通常是一个坏主意,因此上述所有尝试都是错误的。相反,您应该包含该文件作为其预期使用:

#include <boost/test.hpp>

为此,您需要告诉编译器在哪里查找,因此您设置包含路径-I dir,在您的情况下需要使用该路径,-I /home/user1/boost/boost_1_51_0/以便编译器boost/test.hpp/home/user1/boost/boost_1_51_0/其中查找和查找/home/user1/boost/boost_1_51_0/boost/test.hpp,以及何时包含boost/config.hpp它会/home/user1/boost/boost_1_51_0/boost/config.hpp按预期找到。

但是,现在这会找到/home/user1/boost/boost_1_51_0/boost.test.hpp,但您似乎想要包含一个 Boost.Undordered 单元测试使用的标头...我不确定您为什么认为您想要那个。通常你只想在boostnot under 下包含 Boost headerslibs

于 2012-08-26T14:34:22.920 回答