3

我想检查源文件是否存在,所以我在我的 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 不是伪目录。有更好的解决方案吗?

4

2 回答 2

2

你可以做另一个 make 目标,像这样:

check:
  file $(APPS) > /dev/null

file实用程序将检查所有文件是否存在,并在其中任何文件不存在时失败。它的输出对于这个任务来说是过多的,所以我们将它传递给/dev/null

您将像这样运行检查:

make check
于 2012-07-20T09:29:50.297 回答
2

这是对 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
于 2012-08-23T13:46:16.827 回答