我有一个Makefile,它调用一堆生成器,如编译器和小脚本。有时候(通常是ClearCase问题),可执行标志丢失了,或者更糟的是脚本丢失了。
检查Makefile中可执行标志和程序列表是否存在的最佳方法是什么?
我的第一个实现是在每个可执行文件上执行foreach
并调用它们,然后捕获退出标志。由于该检查需要一些时间,因此我必须对其进行ifdef
,以便绕过不需要使用这些脚本的所有make规则的检查。例如,make clean
只调用rm
,它必须安装在所有平台上。我不需要检查其他程序。
第二个实现只是在ifdef
指令中结合$(shell)
和[ -x foo ]
来检查执行标志。我认为这个解决方案有点难看。
第三种解决方案是调用一个shell脚本来完成这项工作。但是,这个shell脚本在任何情况下都必须是可执行的。我可以做FOO != chmod u+x checker
,但这也很丑。
最好的解决方案是什么?
这样的方法会有帮助吗?
target: source ./script_1
test -x ./script_1 || chmod +x ./script_1
./script_1 < source > target