私は愚かかもしれませんが、Makefile で最も基本的な変数の割り当てを行うことができません。
TEST = $(pwd);
all:
echo $(TEST)
FreeBSD (v9.1) で Bash (v4.2.42) から「make all」を実行すると、次のようになります。
echo
私が何を台無しにしているのか分かりません。$(shell ...) を使用して変数を割り当てようとしましたが、同じ結果が得られました。
バックティック (`) を使用すると、基本的な代入は機能しますが、結果は保存されず、コマンドが保存されます。これは、次の Makefile の例では壊れています。
SERVERIP = `ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $$2}'`
all:
echo $(SERVERIP)
sed -e 's/%LISTENIP%/${SERVERIP}/g' test.conf > work/test.conf.tmp
結果は次のとおりです。
[pete@pete] ~/make
echo `ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $2}'`
10.128.28.151
sed -e 's/%LISTENIP%/`ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $2}'`/g' test.conf > work/test.conf.tmp
sed: 1: "s/%LISTENIP%/`ifconfig ...": unescaped newline inside substitute pattern
*** [all] Error code 1
基本的な変数の割り当てが機能しているように見えますが、結果を sed に挿入すると、結果ではなくコマンド全体が挿入され、壊れます!
何か案は?
ピート。