簡體   English   中英

Makefile - 從多個目錄構建

[英]Makefile - build from multiple directories

我是 Makefile 的新手。

我有一串多個目錄,我想編譯其中的所有.c 文件。 該字符串中的路徑數可以更改(它作為來自腳本的參數接收)。 例如:DIRS = path1 path2...

我很樂意在構建一種機制方面獲得幫助,該機制可以通過 DIRS 實現 go 並在每個路徑中編譯每個.c 文件。

我不確定這是否是正確的方法,但到目前為止我得到了這個:


DIRS = path1 path2

define generateRules
SOURCES := $(wildcard $(path)/*.c)

%.o: $(SOURCES)
    echo "path is $(path)";
    $(CC) $(CFLAGS) ${INCS} ${DEFS} -c $< -o ${BUILD}/$@
endef

$(foreach path,$(DIRS),$(info $(generateRules)))

謝謝

讓我們從生成源文件列表開始。

DIRS = path1 path2
SOURCES := $(wildcard $(addsuffix /*.c,$(DIRS)))

由此我們可以生成一個目標列表:

TARGETS = $(patsubst %.c,$(BUILD)/%.o,$(notdir $(SOURCES)))

獲得所需效果的最簡單方法是使用vpath 指令static 模式規則

vpath %.c $(DIRS)

$(TARGETS): $(BUILD)/%.o: %.c
    @echo building $@ from $<
    $(CC) $(CFLAGS) ${INCS} ${DEFS} -c $< -o $@

如果您想為每個源目錄(或每個源文件)生成規則,您可以這樣做,但這需要一些更高級的技術。 我建議您首先使用簡單的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM