首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么只对简单的shell命令名使用递归变量?

问为什么只对简单的shell命令名使用递归变量?
EN

Stack Overflow用户
提问于 2019-06-04 17:40:19
回答 1查看 51关注 0票数 0

我知道makefile中简单变量和递归变量的区别。

我见过许多makefile(包括linux内核),它们使用递归变量作为简单的shell命令名。

我认为在这种情况下使用简单的变量就足够了。

但大多数都使用递归变量。

除了简单的原因之外,还有什么特殊的原因需要使用递归变量吗?

代码语言:javascript
复制
CC = cc
AR = ar
RM = rm -f
DIFF = diff
TAR = tar
FIND = find
INSTALL = install
TCL_PATH = tclsh
TCLTK_PATH = wish
XGETTEXT = xgettext
MSGFMT = msgfmt
CURL_CONFIG = curl-config
PTHREAD_LIBS = -lpthread
EN

回答 1

Stack Overflow用户

发布于 2019-06-04 20:09:29

除了使用简单的递归变量之外,还有什么特殊的原因吗?

是的:简单赋值的变量是一个GNU make扩展。传统的make没有这个特性,它也不是由POSIX指定的。因此

使用普通(“递归”)赋值的

  1. 更具可移植性。事实上,在一些environments.
  2. Using普通任务中,它是唯一可用的选择。traditional.
  3. Using普通任务是指有多少人学会了这样做。
  4. 那些主要在默认make不是GNU make的环境中工作的人可能甚至不知道/对简单任务或其他GNU扩展感兴趣。

另外,

  1. 始终只使用一种赋值形式来生成更容易理解的makefile,并且普通赋值具有一些有用的属性,这些属性可能会使makefile作者倾向于选择那种形式。

可能还有其他的。

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

https://stackoverflow.com/questions/56441309

复制
相关文章

相似问题

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