g ++ makefile,包含错误,没有这样的文件或目录

时间:2012-08-08 02:12:53

标签: c++ include makefile g++ include-path

我正在尝试包含以下标题:

#include <libs/serialization/example/portable_binary_iarchive.hpp>
#include <libs/serialization/example/portable_binary_oarchive.hpp>

这些文件位于以下路径中:

/home/nobody/boost_1_45_0/libs/serialization/example/portable_binary_iarchive.hpp

在我的Makefile中,我添加了:

-I/home/nobody/boost_1_45_0/libs

但是,当我编译时,我收到如下错误消息:

error: libs/serialization/example/portable_binary_iarchive.hpp: No such file or directory

有谁能告诉我这里做错了什么?我还包括像

这样的boost库
#include <boost/archive/binary_oarchive.hpp>

但是,要获得这些,只需在我的Makefile中执行:

-I/usr/include/boost

为什么这不适用于其他位置的标头?我应该如何更改我的Makefile?第一个声明当前是这样的:

test: test.o 
    g++ -O3 -ffast-math -funroll-loops -ansi -pedantic-errors -L/usr/lib -lboost_filesystem -lboost_serialization -lboost_iostreams -lz -I/usr/include/boost -I/home/nobody/boost_1_45_0/libs -o test test.o

1 个答案:

答案 0 :(得分:2)

获得

#include <libs/serialization/example/portable_binary_iarchive.hpp>

来自目录

/home/nobody/boost_1_45_0/libs/serialization/example/portable_binary_iarchive.hpp

你的Makefile需要

-I/home/nobody/boost_1_45_0

请注意,我从最后省略了/libs。那是因为你的#include指令已经列出了那个目录。


至于你的第二个例子,是你想要在这个位置的文件:

/usr/include/boost/boost/archive/binary_oarchive.hpp
                   ^^^^^ (repeated boost here)

如果不是g ++可能默认为/usr/include作为

的搜索空间
#include <boost/archive/binary_oarchive.hpp>
是的,你的

-I/usr/include/boost

对编译器没用。