似乎makefile变量不能包含+
。我的环境:Ubuntu 14 LTS,GNU Make 3.81,bash。
G++=g++ -std=c++11
test:
$(G++) a.cpp -o a
test1:
g++ -std=c++11 a.cpp -o a
make test1
成功,而make test
错误错误
make: aa.cpp: Command not found
我在" GNU make"书。
变量名称可以是不包含':','#','='或白色的任何字符序列。 空间。但是,变量名称包含字母,数字和字符以外的字符 应仔细考虑下划线,因为在某些外壳中它们不能通过 环境到子制作
答案 0 :(得分:2)
不,这没关系。你的问题是make解析错误。
G++=echo
B++:=echo
test:
$(G++) a.cpp -o a
test1:
echo a.cpp -o a
test2:
$(G+) a.cpp -o a
test3:
$(B++) a.cpp -o a
执行命令
$ make test
a.cpp -o a
make: a.cpp: Command not found
make: *** [test] Error 127
$ make test1
echo a.cpp -o a
a.cpp -o a
$ make test2
echo a.cpp -o a
a.cpp -o a
$ make test3
echo a.cpp -o a
a.cpp -o a
问题在于,将G++=echo
视为G+ += echo
而不是G++ = echo
。修复方法是使用G++:=echo
强制解析以查看:=
或添加空格G++ =echo
。