我可能很愚蠢,但我无法在我的 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 时,它会插入整个命令而不是结果,这会中断!
有任何想法吗?
皮特。