2013-03-29 45 views
0

我有多個源文件(讓我們稱之爲file1.c,file2.c等),我想編譯成單個可執行文件。生成文件的相關部分:使單個目標匹配模式的所有文件

file%.x: file%.o 
    $(CC) $(CFLAGS) $< -o [email protected] 
file%.o: file%.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

我可以讓他們與make file1.xmake file2.x等個別細,我想有一個目標是建立所有文件的生成文件。我嘗試了一些東西,但他們沒有工作:

all: file*.x 

all: file%.x 

是否有一個簡單的方法來做到這一點?提前致謝。

回答

1
SOURCES := $(wildcard file*.c) 
FILES := $(SOURCES:.c=.x) 

all: $(FILES) 
+0

工程就像一個魅力,謝謝。 – jpalm

0

這裏的奇怪的事情是,你只是建立一堆的OBJECT文件。通常情況下,目標文件將被用於鏈接在一起形成一個可執行文件,因此您的默認規則是構建該可執行文件,該可執行文件將構建它的任何依賴項。

如果你真的只想做你的方式,我會做這樣的事情:

FILES=test1 test2 test3 

all: $(FILES:%=%.o) 

$(FILES:%.o): %.c 
    $(CC) -o [email protected] $^ 
0

我居然回答我自己的問題(與幫助,從解答this question)。標有「正確」的答案也適用。

all: $(addsuffix .x, $(basename $(wildcard file*.c)) 

感謝您的幫助。

相關問題