如果我有一个目标,它有一些依赖关系,并且我调用该目标,make
将尝试生成依赖关系,如果相关规则可用(它们是)。有没有办法防止这种行为,实质上告诉make
使用该目标的依赖项必须是可用的,但如果它们不是,那就错误了?
示例,假设foo
和bar
不存在:
foo:
echo a > foo
bar:
echo b > bar
target: foo bar
cat foo bar > foobar
所需行为
> make target
error, cannot satisfy dependencies
实际行为
> make target
echo a > foo
echo b > bar
cat foo bar > foobar
正在使用GNU make,如果它有任何区别。
答案 0 :(得分:1)
没有。如果make找不到构建先决条件的规则,并且它不存在,则make将失败。如果让CAN找到建立先决条件的规则,并且它已经过时,那么make将构建它。
如果您不想重建它,则不应将其列为先决条件。你可以这样做:
target:
[ -f foo ] && [ -f bar ] || { echo "cannot satisfy prerequisites"; exit 1; }
答案 1 :(得分:1)
我通常做的就是
target: dependency
dependency:
@echo fatal error: $@ is missing; exit 1