0

正如标题所说,我试图在我的 makefile 中使用 awk 来提取版本号。一旦版本号被提取,它就会被导出并附加到我创建的包的末尾。我有出口部分工作。问题是我创建的任何二进制文件都标记为“foobin-2.bin”而不是“foobin-2.0.0.0.67.bin”

我有一个版本文件,名为 'foo_version.mk'

以下是它的内容:

#version.mk.
VERSION 2.0.0.0.67

这是我的makefile的作用:

export version = $(shell awk '{ v[$$1] = $$2; } \
                 END {printf("%d.", \
                     v["VERSION"]); \
                   }' version.mk)

您可能会说,我是 awk 的新手,我的经验仅限于使用和编辑其他人的东西。所有帮助表示赞赏。

4

1 回答 1

1

%d告诉 awk 将版本转换为十进制数,因此在第一个.. 您可能想要%s,但根本没有必要使用printf,而且您也不需要数组。假设您的 makefile 语法要求 every$像当前脚本中一样加倍,您只需要:

export version = $(shell awk '$$1=="VERSION"{ print $$2"." }' version.mk)
于 2015-08-13T17:17:24.160 回答