我試圖創建我發現這裏的目標是用於.D搜索依賴在必要條件列表中獲取目標名稱中的函數[生成文件]
多虧了答案一個makefile here和here.SECONDEXPANSION:
完成這項工作。然而,我遇到了嵌套功能這個看起來奇怪的問題。違規的規則是這樣的:的
.SECONDEXPANSION:
$(APPS): %: $$(patsubst %.c,%.o,$$(wildcard [email protected]/*.c)) $$(INC_OBJS)
$(CC) $(CFLAGS) $^ -o [email protected]
代替:
gcc -Wall -std=c99 unittest.d/unittest.o common/cards.o -o unittest
這是我想要的,我得到:
gcc -Wall -std=c99 unittest.d/unittest.c common/cards.o -o unittest
由於某種原因沒有按」 t用.o
代替.c
。所以看來我幾乎在那裏,我只需要讓替代工作。所有的幫助表示讚賞,如果你認爲這是一個糟糕的方式來組織一個makefile,在這方面的批評歡迎。
是做到了!我想我明白你在說什麼,但爲什麼它不會變成'$(patsubst unittest.c,unittest.o,$(通配符$ @ .d/* .c))'?由於模式(目標)是單元測試? – Luis 2014-09-01 19:55:50
@路易斯:對不起,我的錯誤,我太快瀏覽了這個問題。你說得對,我會編輯... – Beta 2014-09-01 20:04:51