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

Compiling C++ with cygwin doesn't search provided include paths

本文关键字:包含 路径 搜索 cygwin 编译 C++ 使用      更新时间:2023-10-16

我正在一个树中工作,它在任何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或你有什么。

这里的include语句是:

// snip
#include <Eigen/StdVector>
#include <cmath>
#include <iostream>
#include <fstream>
#include <tclap/CmdLine.h>
// snip

想法?谢谢!

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

要么使用-Iinclude,要么包含CmdLine.h而不包含路径

使用-Iinclude工作吗?您可能不需要显式地添加include的子目录,因为您在#include语句的名称中引用了它们。