2013-03-02 73 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"