2013-06-20 86 views
1

我有一個1.c 2.c .... nc文件並有它的依賴關係.h文件也...我知道爲多個c文件創建make文件。但我不知道如何創建C文件鏈接到.h文件的make文件。如果我嘗試makefile,我知道它會給出錯誤,如Makefile爲多個.c和.h文件

make: *** No rule to make target '2.h', needed by '2.o' .Stop. 

並且我也不需要這種類型的makefile。

program: main.o dbAdapter.o 
    gcc -o program main.o dbAdapter.o 

main.o: main.c dbAdapter.h 
    gcc -c main.c 

dbAdapter.o dbAdapter.c dbAdapter.h 
    gcc -c dbAdapter.c 

這對4或5個文件很有用。但是如果我有大量文件,最好的解決方案是什麼?

+0

你應該看看系統,如[GNU自動](http://en.wikipedia.org/wiki/GNU_build_system)或[CMake的(HTTP:// WWW。 cmake.org/),因爲這些將爲您自動執行幾乎所有的這些工作。 –

回答

0

只要我和C一起工作,我從不寫包含頭文件(.h)的make文件,頭文件在這裏公開一些數據結構和方法,其他C模塊需要的常量。 您不需要爲頭文件創建規則,您只需構建.o對象,然後當您創建可執行文件時,liker將爲您做出神奇的貢獻。 如果你需要幫助創建一個make文件,你可以在這裏解釋你想要創建的東西,然後我會給你一個提示。 乾杯。

0

如果您的頭文件不在當前目錄中並且您將其包含在Makefile中,Make開始在默認位置查找頭文件,但在您的情況下無法找到它們。

您應該將2.h頭文件放在當前目錄中以避免此搜索。

2

您可以通過此方式在Makefile鏈接所有的.h:

  1. 把所有的.H在同一文件(即我們俗稱的「包含」爲爲例)

  2. 將它添加到你的Makefile中:gcc * .c -I/path/Include -iInclude

ps:你編譯你的.c文件的方式有點奇怪。 通常我們使用這樣的:

SRC = 1.c 
     2.c 
     n.c 

OBJ = $(SRC:.c=.o) 

all: $(OBJ) 
     gcc $(SRC) -I/path/Include -iInclude (where path is the location of your file called "Include")