我试图写这个makefile
,其中目标的先决条件应该是shell命令的输出。这就是我所拥有的
foo: ($shell find mydir -name "*.ext")
# command goes here
其中mydir
是makefile
本身所在目录下的目录。但是,即使没有修改make foo
个文件,执行*.ext
也会执行配方(即,它总是执行配方,就像设置了先决条件一样)。
我确定find
命令会输出预期结果。
知道这里可能出现什么问题,以及如何让它在预期中表现出来?
答案 0 :(得分:1)
进行一点测试,看看它是否正常工作。这里是Makefile
:
foo: $(shell find mydir -name "*.ext")
cat $^ > $@
文件树:
.
├── Makefile
└── mydir
├── bar.ext
└── foo.ext
然后运行Makefile
:
$ make
cat mydir/foo.ext mydir/bar.ext > foo
$ make
make: `foo' is up to date.
$ touch mydir/foo.ext
$ make
cat mydir/foo.ext mydir/bar.ext > foo
所以它运作良好。请确保您的foo
文件是由构建规则创建的。