2013-03-02 47 views
0

我们需要对下载的大包进行一些改进。 假设主文件夹就像C未能包含

... /凸出

,并有将用于编译项目

... /凸出/ Makefile中

我添加了一个新的文件夹

... /凸出/特征1/file1.h ... /凸出/特征1/file1.c中

file1.c中是包括file1.h

所以

的#include “特征1/file1.h”

然后,当生成文件被执行,它停止在命令等

gcc -c feature1/file1.c -I。 ...

错误消息读起来就像它没有包括file1.h

同样的代码可以在另一种情况下进行编译,而不会触发错误。 这两个实例都是Ubuntu 10.04。我不会说他们是相同的,但是应该是非常相似的。任何想法出了什么问题?谢谢。

詹姆斯

+0

“错误信息读取像...” - 为什么不复制/粘贴实际的错误信息,所以没有混淆?当你在它的时候,为Makefile调用的'gcc'命令做同样的事情。 – 2013-03-02 08:49:44

回答

2

这取决于the "-I" parameters to gcc。如果文件夹“feature1”在其中而不是其父 - 它会失败。如果它的父母在其中 - 它会成功。

你的情况(“-I。”)它是在搜索路径中的“feature1”,而不是它的父项。

另外,正如其他人提到的,由于这两个文件都在同一目录中,因此不需要“include”指令中的目录名称。

+0

Makefile位于feature1的父级。并且在file1.c中还包含“feature2/file2.h”包含“feature3/file3.h”... – user462301 2013-03-02 08:38:32

+1

@ user462301我不确定我是否理解你想说的内容。在make文件不相关的地方,命令“gcc -I”。在每个目录中调用,并在每个目录中“。”指向当前,而不是make文件所在的位置。 – littleadv 2013-03-02 08:42:08

1
file1.c is to include file1.h 

在这种情况下,两个文件都在同一个文件夹,所以我认为这必须是:

#include "file1.h" 
0

如果h和.c文件在同一目录下,我会期望包括:

#include "file1.h"