为什么先决条件未按预期设定?

时间:2015-07-27 05:14:15

标签: makefile

我试图写这个makefile,其中目标的先决条件应该是shell命令的输出。这就是我所拥有的

foo: ($shell find mydir -name "*.ext")
    # command goes here

其中mydirmakefile本身所在目录下的目录。但是,即使没有修改make foo个文件,执行*.ext也会执行配方(即,它总是执行配方,就像设置了先决条件一样)。

我确定find命令会输出预期结果。

知道这里可能出现什么问题,以及如何让它在预期中表现出来?

1 个答案:

答案 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文件是由构建规则创建的。