首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU make通配符不再提供排序输出。有控制开关吗?

GNU make通配符不再提供排序输出。有控制开关吗?
EN

Stack Overflow用户
提问于 2016-11-12 08:43:39
回答 2查看 2.2K关注 0票数 10

通配符函数在版本3.81中返回已排序的结果,但在版本4.2中确实会这样做。有没有什么编译/运行时开关来控制这个函数?

下面显示了GNU make的两个版本的结果。

代码语言:javascript
复制
$ ls
a.mk  a0.svp  a1.svp  a2.svp  a3.svp  a4.svp  a5.svp  a6.svp  a7.svp  a8.svp  a9.svp

$ cat a.mk 
SVP_FILES := $(wildcard *.svp)

all:
        @echo $(SVP_FILES)

$ make  -f a.mk all          
a0.svp a1.svp **a2.svp a3.svp a4.svp a5.svp a6.svp a7.svp a8.svp a9.svp**

$ ~/sandbox/bin/make  -f a.mk all          
a0.svp a1.svp **a6.svp a5.svp a9.svp a4.svp a3.svp a2.svp a7.svp a8.svp**

$make –v | head -n 1

GNU Make 3.81

$ ~/sandbox/bin/make -v | head -n 1

GNU Make 4.2
EN

回答 2

Stack Overflow用户

发布于 2016-11-12 09:04:29

正如在NEWS文件中提到的

..。

  • 警告:向后不兼容!通配符没有记录为返回排序的值,但结果在此版本之前已经排序。如果您的makefile需要通配符扩展的排序结果,请使用$(sort ...)函数显式请求。

SVP_FILES := $(sort $(wildcard *.svp))

票数 19
EN

Stack Overflow用户

发布于 2020-01-21 08:54:43

GNU make 4.3再次对globs进行了排序。

https://savannah.gnu.org/bugs/index.php?52076

事实证明,没有人知道为什么要放弃排序。

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

https://stackoverflow.com/questions/40558385

复制
相关文章

相似问题

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