0

我有一个目录maths,它是一个仅由头文件组成的库。我正在尝试通过在我的主目录中运行以下命令来编译我的程序:

g++ -I ../maths prog1.cpp prog2.cpp test.cpp -o et -lboost_date_time -lgsl -lgslcblas

但我收到以下编译错误:

prog1.cpp:4:23: fatal error: maths/Dense: No such file or directory
compilation terminated.
prog2.cpp:6:23: fatal error: maths/Dense: No such file or directory
compilation terminated.

maths与 .cpp 文件位于同一目录(即我的主目录)中,我也在我的家中运行编译行。

prog1.cpp 和 prog2.cpp 分别在第 4 行和第 6 行具有以下标题 #include<maths/Dense>,因此我收到错误消息。

我如何解决它。

4

2 回答 2

2

您可以将包含路径更改为,也可以将包含更改-I..#include <Dense>

等待,如果maths与源文件在同一目录中并且是当前目录,则可以将包含路径更改为-I.或包含更改为#include "Dense"

于 2012-04-25T21:56:56.187 回答
1

maths 与 .cpp 文件位于同一目录(即我的主目录)中

您的包含路径为-I ../maths. 您需要-I ./maths- 或更简单,-I maths因为它是当前目录maths的子目录,而不是父目录的子目录。对?

然后在您的 C++ 文件中,使用#include <Dense>. 如果你想使用#include <maths/Dense>你需要调整包含路径。但是,使用-I.可能会导致大量问题1,我强烈建议要这样做。

Instead, it’s common practice to have an include subdirectory that is included. So your folder structure should preferably look as follows:

./
+ include/
| + maths/
|   + Dense
|
+ your_file.cpp

Then use -I include, and in your C++ file, #include <maths/Dense>.


1) Consider what happens if you’ve got a file ./map.cpp from which you generate an executable called ./map. As soon as you use #include <map> anywhere in your code, this will try to include ./map instead of the map standard header.

于 2012-04-25T21:58:59.727 回答