Makefile で、CSVやSubversionレポジトリからソースツリーを作業ディレクトリにエクスポートしてビルドするような場合...
たとえば、
以下のようなMakefileを書いた場合ですが、
make clean したときに、作業ディレクトリが存在しないとエラーになります。
# 作業ディレクトリ
workdir := __workdir
foo.jar : $(workdir)
@ant
@cp $(workdir)/foo.jar .
$(workdir) :
@svn export svn://foobar.net/hogehoge/trunk $@
clean :
@cd $(workdir); ant clean
cleanall :
@$(RM) -r $(workdir)
これでは、作業ディレクトリが存在しないときに、 make clean すると、エラーになります。
これを防ぐには、if を使用して、作業ディレクトリが存在しているときだけ、処理をするように変更します。
# 作業ディレクトリ
workdir := __workdir
foo.jar : $(workdir)
@ant
@cp $(workdir)/foo.jar .
$(workdir) :
@svn export svn://foobar.net/hogehoge/trunk $@
define do-ant-clean-in-workdir
@cd $(workdir); ant clean
endef
workdirexists := $(shell find ./ -name $(workdir))
clean :
$(if $(workdirexists) ,$(do-ant-clean-in-workdir))
cleanall :
@$(RM) -r $(workdir)