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

发布于 2024-12-06 05:52:29 字数 927 浏览 0 评论 0原文

我正在一棵树中工作,该树在我扔给它的任何 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

想法?谢谢!

I am working within a tree that compiles fine on any Unix machine I throw it at, but Cygwin is being difficult and I'm not really sure where to start. I have the following directory structure:

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

When I try to compile this, I get the following error from 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.

I know it's finding the other libraries (eigen and rapidxml) fine because if I remove the respective include flags, it throws an error saying that it can't find eigen or what have you.

The include statement in question is:

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

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

Ideas? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

君勿笑 2024-12-13 05:52:29

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

使用 -Iinclude,或包含不带路径的 CmdLine.h

You're specifying -Iinclude/tclap, then include tclap/CmdLine.h, so the compiler goes hunting for include/tclap/tclap/CmdLine.h.

Either use -Iinclude, or include CmdLine.h without the path.

风渺 2024-12-13 05:52:29

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

Does using -Iinclude work? You probably don't need to be explicitly adding the subdirs of include because you refer to them in the names in the #include statements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文