14

私の 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

目的のメイクファイル

上記の例では、ターゲットが「作成」に失敗したnetwork場合にのみ、ターゲットを「作成」したいと考えています。files

実行順序:

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

1 に答える 1

23

残念ながら、再帰的なmakeはあなたの友達です。

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

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

于 2013-03-22T11:54:33.610 に答える