首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nmake附加到变量

nmake附加到变量
EN

Stack Overflow用户
提问于 2012-03-24 00:56:32
回答 2查看 6.2K关注 0票数 8
  • 实用程序: NMake
  • 平台: Windows 7

我有下面的Makefile

代码语言:javascript
复制
FILE = $(shell) *.c
FILE += $(shell) *.cpp

exec:
    @echo $(FILE)

这和make完全一样。这将引发以下nmake错误

代码语言:javascript
复制
makefile(2) : fatal error U1036: syntax error : too many names to left of '='
Stop.

可能是什么原因?

没有线

代码语言:javascript
复制
FILE += $(shell) *.cpp

nmake工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-24 01:03:43

+=语法是80年代末在Sun的make中率先出现的一个GNU制造扩展。它不是POSIX标准make语法的一部分,也不是原始AT&T make的一部分。

如果使用扩展,当您切换到不支持扩展的系统时,会被捕获。你要么必须重新工作(努力),要么坚持原来的系统。

修改文件以使用nmake的一种方法可能是:

代码语言:javascript
复制
FILE1 = $(shell) *.c
FILE2 = $(shell) *.cpp
FILE  = $(FILE1) $(FILE2)

exec:
    @echo $(FILE)

或者,在未定义宏shell的情况下,甚至:

代码语言:javascript
复制
FILE1 = *.c
FILE2 = *.cpp
FILE  = $(FILE1) $(FILE2)

exec:
    @echo $(FILE)
票数 6
EN

Stack Overflow用户

发布于 2012-03-24 01:11:04

而不是

代码语言:javascript
复制
FILE = $(shell) *.c
FILE += $(shell) *.cpp

你必须用

代码语言:javascript
复制
FILE = $(shell) *.c
FILE = $(shell) *.cpp $(FILE)

其扩张策略不同于nmake和make。nmake在开始评估规则之前扩展了所有内容,而make则在需要的时候进行扩展,并且因为这会带来问题,因此它有两种扩展的味道,如信息页面中所描述的。

我个人更喜欢nmake的方式。顺便说一下,用"jom“代替"nmake”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9848207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档