使用cygwin编译C ++不会搜索提供的包含路径

时间:2011-09-21 20:52:57

标签: c++ compiler-errors cygwin

我正在一棵树上工作,在我扔掉它的任何Unix机器上编译都很好,但Cygwin很难,我不确定从哪里开始。我有以下目录结构:

buildwin/
|-- main.cpp
|-- other project files
|-- include/
    |-- tclap
        |-- CmdLine.h
        |-- other files (including CmdLine.cpp)
    |-- eigen
        |-- (appropriate files)
    |-- rapidxml
        |-- (appropriate files)

当我尝试编译它时,我从g ++中得到以下错误:

$ g++ main.cpp -lglut32 -lglu32 -lopengl32 -Iinclude/eigen -Iinclude/rapidxml -Iinclude/tclap
main.cpp:6:27: fatal error: tclap/CmdLine.h: No such file or directory
compilation terminated.

我知道它发现其他库(eigenrapidxml)很好,因为如果我删除相应的包含标志,它会抛出错误,说它无法找到eigen或你有什么。

有问题的包含声明是:

// snip
#include <Eigen/StdVector>
#include <cmath>
#include <iostream>
#include <fstream>

#include <tclap/CmdLine.h>
// snip

想法?谢谢!

2 个答案:

答案 0 :(得分:1)

您指定-Iinclude/tclap,然后包含tclap/CmdLine.h,因此编译器会寻找include/tclap/tclap/CmdLine.h

使用-Iinclude,或在没有路径的情况下包含CmdLine.h

答案 1 :(得分:1)

使用-Iinclude是否有效?您可能不需要显式添加include的子目录,因为您在#include语句中的名称中引用它们。