【问题标题】:Using awk in a makefile to read version numbers在 makefile 中使用 awk 读取版本号
【发布时间】:2015-08-13 17:02:31
【问题描述】:

正如标题所说,我正在尝试在我的 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 的新手,我的经验仅限于使用和编辑其他人的东西。所有帮助表示赞赏。

【问题讨论】:

    标签: regex bash awk makefile binaries


    【解决方案1】:

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

    export version = $(shell awk '$$1=="VERSION"{ print $$2"." }' version.mk)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2020-01-22
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多