nmake附加到变量

时间:2012-03-24 00:56:32

标签: makefile nmake

  • 效用:NMake
  • 平台:Windows 7

我有以下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) *.cpp

nmake完美无缺。

2 个答案:

答案 0 :(得分:6)

+=语法是GNU Make扩展,是80年代后期Sun的make中的先驱。它不是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)

答案 1 :(得分:2)

而不是

FILE = $(shell) *.c
FILE += $(shell) *.cpp

你必须使用

FILE = $(shell) *.c
FILE = $(shell) *.cpp $(FILE)

扩张策略与nmake和make不同。 nmake在开始评估规则之前扩展了所有规则,而make只在需要的时候进行扩展,因为这会产生问题,它具有信息页面中描述的两种扩展方式。

我个人更喜欢nmake的方式。顺便说一下,使用“jom”而不是“nmake”。