私のクリーン セクションでは、Makefile
ファイルを完全に削除する前に、ファイルが存在するかどうかを確認しようとしています。このコードを使用していますが、エラーが発生します。
どうしたの?
if [ -a myApp ]
then
rm myApp
fi
このエラーメッセージが表示されます
if [ -a myApp ]
/bin/sh: Syntax error: end of file unexpected (expecting "then")
make: *** [clean] Error 2
ベストアンサー1
多くの人がこれにシェル スクリプトを使用しているのを見るのは奇妙です。私はこれをターゲットの外で書いているので、ネイティブの makefile 構文を使用する方法を探していました。wildcard
ファイルが存在するかどうかを確認するには、関数を使用できます。
ifeq ($(UNAME),Darwin)
SHELL := /opt/local/bin/bash
OS_X := true
else ifneq (,$(wildcard /etc/redhat-release))
OS_RHEL := true
else
OS_DEB := true
SHELL := /bin/bash
endif
参照:
アップデート:
私は本当に気に入った方法を見つけました:
ifneq ("$(wildcard $(PATH_TO_FILE))","")
FILE_EXISTS = 1
else
FILE_EXISTS = 0
endif