我想检查源文件是否存在,所以我在我的 gnu makefile 中分配了 TO_DIR=/dev/null 。
APPS=a b c d
install:
cp $(APPS) $(TO_DIR)
- 对于正常情况,我将运行 'TO_DIR=~/bin make install'
- 对于测试用例(只需确保文件存在以供复制),我将运行 'TO_DIR=/dev/null make install'
但它会失败,因为 /dev/null 不是伪目录。有更好的解决方案吗?
你可以做另一个 make 目标,像这样:
check:
file $(APPS) > /dev/null
file
实用程序将检查所有文件是否存在,并在其中任何文件不存在时失败。它的输出对于这个任务来说是过多的,所以我们将它传递给/dev/null
您将像这样运行检查:
make check
这是对 spacediver 答案的修改,它只是根据TO_DIR
install:
[ -z "$(TO_DIR)" ] && make install_for_real || make check
install_for_real:
cp $(APPS) $(TO_DIR)
check:
file $(APPS) > /dev/null
这应该检查任何一个
make install
make install TO_DIR=
但真正的安装
make install TO_DIR=/path/to/installation/dir