Makefileは条件を受け入れません

Makefileは条件を受け入れません

私は次の条件文をaで使用しますMakefile

mytarget:
    if [ -z "${TAG1}" | -z "${TAG2}" | -z "${TAG3}" ]
        then
        echo "Need to set all tag names images
        exit 1
    fi

しかし...

$ make mytarget TAG1=latest TAG2=latest TAG3=latest
if [ -z "latest" | -z "latest" | -z "latest" ]
/bin/bash: -c: line 1: syntax error: unexpected end of file
Makefile:36: recipe for target 'env' failed
make: *** [env] Error 1

ベストアンサー1

すべての(最後の)コマンドラインの最後にはバックスラッシュが必要です。

make次のコマンドを使用して、各コマンドラインを別々のシェルに送信します。/bin/sh -ce "cmdline"

シェルには改行文字がなくなり、backslash newline一部のコマンドの前にセミコロンを追加する必要があります。

target:
    if true; \
        then \
            echo true;\
    fi

バックスラッシュを使用すると、makeこれらのダミー行はすべて次に変換されます。

if true; then echo true; fi

に送信する前に/bin/sh -ce cmd

おすすめ記事