我有一个包含相关依赖项的目标的Makefile.所以我使用查找表,如:
APPS = a b c
dependency.lookup.a := x
dependency.lookup.b := y
dependency.lookup.c := z
$(APPS): %: path/$(dependency.lookup.%).datafile
do something with $(dependency.lookup.$@)
Run Code Online (Sandbox Code Playgroud)
这个makefile给了我错误.***没有规则来制作目标'path/.datafile'
约束:只有MinGW.不能使用shell/MSYS.也支持FreeBSD.
这需要使用辅助扩展功能:
.SECONDEXPANSION:
$(APPS): %: path/$$(dependency.loopup.$$*).datafile
@echo "$@ depends on $^"
%.datafile : # Create one on demand for testing.
mkdir -p ${@D}
touch $@
Run Code Online (Sandbox Code Playgroud)
输出:
mkdir -p path/
touch path/x.datafile
a depends on path/x.datafile
Run Code Online (Sandbox Code Playgroud)
或者,使用常规依赖项:
a : path/x.datafile
b : path/y.datafile
c : path/z.datafile
$(APPS): % :
@echo "$@ depends on $^"
Run Code Online (Sandbox Code Playgroud)
前3行仅添加依赖项,规则单独指定.输出是一样的.
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |