Ale*_*lex 2 c++ gcc boost include-path boost-propertytree
我已经安装了 boost_1_41_0 并尝试遵循一些关于 xml 解析的教程:
#include <boost/property_tree/ptree.hpp>
int main(){
using boost::property_tree::ptree;
ptree pt;
cout<<"Here is an XML test!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是问题是boost找不到需要的header:
gcc.compile.c++ bin/gcc-4.6.0/debug/main.o
main.cpp:1:46: fatal error: boost/property_tree/ptree.hpp: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
使用 "" 而不是 <> 也无济于事。我还尝试传递选项 cxxflags=-I/pass/to/this/header - 这也不起作用。仅当我使用头文件的完整路径时 - 它可以工作,但它依赖于另一个头文件,它找不到。
那么如何让 boost 安装寻找自己的包含目录呢?谢谢。
小智 6
您肯定需要让编译器知道在哪里可以找到 boost 头文件。但是,您必须将路径传递到“boost”目录所在的目录,而不是包含文件所在的目录。因此,例如,如果您的 boost 头文件在 中/opt/boost/1.47.0/include
并且您的文件在 中/opt/boost/1.47.0/include/boost/property_tree/ptree.hpp
,那么您必须/opt/boost/1.47.0/include
使用-I
:传递给编译器-I/opt/boost/1.47.0/include
。或者甚至更好,使用-isystem /opt/boost/1.47.0/include
这样您就不会从这些标题中收到警告。
是的,您忘记cout
了全局命名空间中没有,您必须使用std::cout
,或者说using std::cout;
或using namespace std;
...更不用说#include <iostream>
. 另外,C++ 中不需要函数中的return
语句,main
默认情况下它将返回 0,除非您返回其他内容,因此您可以简单地删除该行。
希望能帮助到你。祝你好运!
归档时间: |
|
查看次数: |
5640 次 |
最近记录: |