我正在尝试包含以下标题:
#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
答案 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
对编译器没用。