我有下面的Makefile
FILE = $(shell) *.c
FILE += $(shell) *.cpp
exec:
@echo $(FILE)这和make完全一样。这将引发以下nmake错误
makefile(2) : fatal error U1036: syntax error : too many names to left of '='
Stop.可能是什么原因?
没有线
FILE += $(shell) *.cppnmake工作得很好。
发布于 2012-03-24 01:03:43
+=语法是80年代末在Sun的make中率先出现的一个GNU制造扩展。它不是POSIX标准make语法的一部分,也不是原始AT&T make的一部分。
如果使用扩展,当您切换到不支持扩展的系统时,会被捕获。你要么必须重新工作(努力),要么坚持原来的系统。
修改文件以使用nmake的一种方法可能是:
FILE1 = $(shell) *.c
FILE2 = $(shell) *.cpp
FILE = $(FILE1) $(FILE2)
exec:
@echo $(FILE)或者,在未定义宏shell的情况下,甚至:
FILE1 = *.c
FILE2 = *.cpp
FILE = $(FILE1) $(FILE2)
exec:
@echo $(FILE)发布于 2012-03-24 01:11:04
而不是
FILE = $(shell) *.c
FILE += $(shell) *.cpp你必须用
FILE = $(shell) *.c
FILE = $(shell) *.cpp $(FILE)其扩张策略不同于nmake和make。nmake在开始评估规则之前扩展了所有内容,而make则在需要的时候进行扩展,并且因为这会带来问题,因此它有两种扩展的味道,如信息页面中所描述的。
我个人更喜欢nmake的方式。顺便说一下,用"jom“代替"nmake”。
https://stackoverflow.com/questions/9848207
复制相似问题