2013-04-07 38 views
3

我已經寫在C三個文件:使用一個Makefile中生成不同的文件不同的可執行

a.c, b.c, d.c 

我想使用一個Makefile以從中生成獨立的可執行文件,如:

a.x, b.x d.x. 

他們不需要彼此運行。他們是完全不同的程序。

我知道,我可以寫一個行編譯他們中的每一個,就像這樣:

gcc -Wall -Werror a.c -o a.x 
gcc -Wall -Werror b.c -o b.x 
gcc -Wall -Werror d.c -o d.x 

但是我正在尋找一個簡單的解決方案,從文件的數目獨立做到這一點,由於事實上,將來我會有很多這樣的人。

我有一個原始的,看起來像這樣:

CC = gcc 
CFLAGS = -g -Wall - Werror -03 
%.x:%.c 
    ${CC} {CFLAGS} -o [email protected] $< 
clean: 
    rm -f *.o 

但我不知道如何來定製它,這樣它讀取我的C-文件各一,並生成從X文件他們中的每一個。

感謝

+0

你可以嘗試閱讀'make'文檔或任何使用它的許多指南可以在網上找到。 – 2013-04-07 18:30:43

回答

5

您是否嘗試過加入

所有:a.x b.x c.x

在你的makefile前

all: a.x b.x c.x 

CC = gcc 
CFLAGS = -g -Wall - Werror -03 
%.x:%.c 
    ${CC} {CFLAGS} -o [email protected] $< 
clean: 
    rm -f *.o 

編輯:建目錄下的所有.c文件,嘗試

all: $(*.c:.c=.x) 

我在製作相當生疏所以這可能並不完全是正確的......你應該閱讀製作文檔。

編輯2:其實這是不正確的......這是更可能的工作:

SRCS = *.c 

all: $(SRCS:.c=.x) 

或者

SRCS = *.c 
PGMS = $(SRCS:.c=.x) 

all: $PGMS 
+0

謝謝,這個作品! 您是否知道解決方案,我不必輸入可執行文件的所有名稱? (我必須編譯20個可執行文件!) 我希望Makefile只是採用c文件的名稱並將其用於相應的x文件。 – 2013-04-07 19:03:44

+0

非常感謝! – 2013-04-07 19:17:15

+0

@DonJano我做了另一個編輯... – 2013-04-07 19:23:33

相關問題