我的源檔案很好地組織在一個檔案夾中,該檔案夾包含子檔案夾,也包含源檔案。
子檔案夾不再分支。
所有的目標檔案只是為了在同一個檔案夾中創建和存盤。
在撰寫生成目標檔案的目標時,我不想在先決條件中手動列出子目錄的名稱:
現在這有效:
$(OBJ)/%.o: $(SRC)/%.c
$(CC) -c $< -o $@ $(CFLAGS)
$(OBJ)/%.o: $(SRC)/$(subdir1)/%.c
$(CC) -c $< -o $@ $(CFLAGS)
$(OBJ)/%.o: $(SRC)/$(subdir2)/%.c
$(CC) -c $< -o $@ $(CFLAGS)
...
但我希望它看起來像這樣:
$(OBJ)/%.o: $(SRC)/%.c OR $(SRC)/*/%.c
$(CC) -c $< -o $@ $(CFLAGS)
我知道標題很可能不是要問的真正問題,但我正在尋找任何解決方案。另外,我知道 在*這里不能用作占位符。
uj5u.com熱心網友回復:
首先,您可以使用vpath簡化您擁有的 makefile :
$(OBJ)/%.o: %.c
$(CC) -c $< -o $@ $(CFLAGS)
vpath %.c $(SRC) $(SRC)/$(subdir1) $(SRC)/$(subdir2)
然后,如果您真的不想指定子目錄:
vpath %.c $(shell find $(SRC) -type d)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367982.html
上一篇:我無法系結箭頭鍵事件
