如果我有一个这样的Makefile规则:
可能的重复:
从单个源文件生成几个目标的GNU Makefile规则
如下所示:
a b c:
echo "Creating a b c"
touch a b c
output: a b c
cat a b c > output
我执行 make -j9 output
make看到有三个依赖项(a,b,c),查找如何生成它们:(即上面的"a b c"规则), 但接下来会发生什么呢? 它难道不应该意识到只需要运行一次"a b c"规则就可以创建所有3个目标吗?
这实际上是make的工作方式:
[pavel@orianna test]$ make -j9 output -n
echo "Creating a b c"
touch a b c
echo "Creating a b c"
touch a b c
echo "Creating a b c"
touch a b c
cat a b c > output
[pavel@orianna test]$
同样的配方会运行3次,每个依赖项都会运行一次,以规则"output"为例!
有人知道为什么会这样吗?
:
更改为&:
即可。https://www.gnu.org/software/make/manual/make.html#Multiple-Targets - jonas-schulze