[英]make: hierarchical make file
(免責聲明:我習慣過騙人……我對make毫無經驗)
上下文:我正在使用生成生成文件的Eclipse CDT。
假設我有一個項目目錄“ lib”,還有兩個構建配置“ Debug”和“ Release”。 Eclipse CDT為每個構建配置優雅地生成一個makefile。 所述makefile文件最終位於“ Debug”和“ Release”文件夾中。
現在,我想做的是在文件夾“ lib”中有一個makefile,該文件將makefile 稱為 “ Debug / makefile”和“ Release / makefile”。
我怎么做?
我希望能夠在文件夾“ lib”中啟動“ make”,並且將使用指定的目標調用這兩種配置。
解決方案基於這里收集的所有寶貴意見,我設計了以下內容:
MAKE=make
BUILDS=Release Debug
TARGETS=all clean
$(TARGETS):
@for b in $(BUILDS) ; do $(MAKE) -C $$b $@ ; done
$(BUILDS):
@for t in $(TARGETS) ; do $(MAKE) -C $@ $$t ; done
%:
@for b in $(BUILDS) ; do $(MAKE) -C $$b $@ ; done
取決於什么是“通話”。 你想
include $(BUILD)/Makefile
要么
$(MAKE) -C $(BUILD) $@
或類似的東西。 我猜你想要后者。 也許像
release debug:
$(MAKE) -C $@
你明白了。
更多示例:
BUILDS=release debug
TARGETS=all clean
$(TARGETS):
for b in $(BUILDS) ; do $(MAKE) -C $$b $@ ; done
$(BUILDS):
for t in $(TARGETS) ; do $(MAKE) -C $@ $$t ; done
由於您提到“指定的目標”,因此我建議:
%: $(MAKE) -C Debug $@ $(MAKE) -C Release $@
如果太籠統,可以用$(TARGETS)替換%,其中TARGETS是您定義的東西,列出所有您想使用的東西。
all: release debug
release:
$(MAKE) -C ../Release
debug:
$(MAKE) -C ../Debug
我假設他們都在同一水平上。 該路徑必須來自您調用Make的位置。
具有在兩個目錄中調用makefile的不同目標。
all: debug product
debug:
$(MAKE) -f debug/Makefile
product:
$(MAKE) -f product/Makefile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.