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

の値に基づいて分岐するだけのスペースダイバーの回答の変更を次に示します。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 に答える