我正在尝试获取依赖于单个文件的目标列表。 make的“--what-if”选项似乎可以完成这项工作,但是我想忽略任何其他过时的文件,除了我作为参数提供的文件。
这是我的测试用例(使用gnu make 4.0处理debian):
$ cat makefile
all: exe1 exe2
exe1: obj1
echo "a" > exe1
exe2: obj2
echo "b" > exe2
obj1: src1
echo "c" > obj1
obj2: src2
echo "d" > obj2
$ make
make: Nothing to be done for 'all'.
$ make -n -W src1
echo "c" > obj1
echo "a" > exe1
完美。这就是我想要的答案:修改src1会导致重建exe1。
但如果我改变了另一个文件“src2”......
$ 触摸src2
$ make -n -W src1
echo "c" > obj1
echo "a" > exe1
echo "d" > obj2
echo "b" > exe2
所以make“make”也是“exe2”。 有没有办法告诉make忽略任何其他过时的文件? 在这种情况下,我不想知道“exe2”会被重建,因为它不依赖于文件“src1”。
换句话说,我正在寻找这个问题的答案:“哪些目标取决于src1?”
感谢您的任何建议!
答案 0 :(得分:0)
无论您为-W
提供哪些选项,make都会尝试构建标准目标集(“目标目标”)。 -W
对目标定位的选择没有影响。
如果您希望make构建一个特定目标,那么您可以在命令行上提供该目标。因此,如果您只想构建exe1
而不是exe2
,则可以运行make exe1
。
为了做你想做的事,你要结合这些功能:
make -n -W src1 exe1
如果您想假设src2
不是新的,可以使用-o
选项:
make -n -o src2 -W src1