确保被调用的脚本存在,并且可以使用make执行



我有一个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

相关内容

最新更新