我知道以前有人问过这个问题,但请多多包涵。run_test 是我要创建的文件的名称。我更喜欢调用“make run_test”。我希望每次调用 make run_test 时都调用 prereq 的 makefile。但我不希望调用 prereq 的 make 来强制 run_test 重建。
run_test: build_prereq prereq_dir/prereq_ts
rebuild_test.sh
.PHONY: build_prereq
build_prereq:
make -C prereq_dir
如果 make -C prereq (prereq_dir/makefile) 检测到 prereq 的依赖项是旧的并且 prereq 需要重建,则 prereq_dir/prereq_ts 被更新。
这样做的问题是总是调用 rebuilt_test.sh,我认为这是因为 run_test 的依赖项之一被执行(因为它是 PHONY)。
我已通过将 run_test 更改为:
run_test:: build_prereq
run_test:: prereq_dir/prereq_ts
rebuild_test.sh
.PHONY: build_prereq
build_prereq:
make -C prereq_dir
这是一个好的解决方案吗?这首先运行 build_prereq,然后如果 prereq_dir/prereq_ts 更新(如果需要,这将在 build_prereq 的 make 调用中发生),它会运行 rebuild_test.sh。
有没有更合适的方法来做到这一点。我不想创建额外的目标,因为这不允许直接调用 make 即“make run_test”。