将多个文件复制到null目录

时间:2012-07-20 09:21:59

标签: shell makefile

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

2 个答案:

答案 0 :(得分:2)

你可以做另一个制作目标,如下:

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

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

你会像这样运行检查:

make check

答案 1 :(得分: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