2013-03-22 10 views
8

私のMakefileには、ネットワーク接続をチェックするコードがあります。このコードでは実行にかなりの時間がかかり、別のターゲットをビルドできない場合にのみ実行したいと考えています。エラーが発生した場合にのみMakefileがコードを実行できますか?

現在のMakefile

all: files network 
    # compile files 

files: 
    # get files from network resources 

network: 
    # check for network connectivity 
    # echo and return an error if it's not available 

実行順序:上記の例で

if not network: 
    # exit with error 
if not files: 
    # exit with error 
if not all: 
    # exit with error 

希望のMakefile

、私はfiles場合、 "作られた" ことをnetworkターゲットを希望ターゲットは「作られた」ことに失敗します。

実行順序:

if not files: 
    if not network: 
     # exit with error 
if not all: 
    # exit with error 
+0

'network'を別のターゲットにしてもよろしいですか? – Beta

+0

@Beta、必ずしもそうである必要はありません。 –

答えて

12

再帰makeはここで私は怖いあなたの友達です。

.PHONY: all 
all: 
    ${MAKE} files || ${MAKE} network 

make filesが成功すると、作業が完了し、終了コードが成功します。失敗した場合、終了コードはmake networkのコードです。

関連する問題