【发布时间】:2019-06-18 07:53:43
【问题描述】:
我正在使用 C 和 arm-gcc 和 Eclipse 编写一些嵌入式固件。 在我的代码中是定义为宏的固件版本号。 我想将该版本自动附加到构建目标文件中。
为了举例,假设这是我的 main.h 文件:
#ifndef MAIN_H__
#define MAIN_H__
#define FW_MAJOR_VERSION 1
#define FW_MINOR_VERSION 0
和生成文件:
TARGET := fw_release
OUTPUT_DIR := out
...
generate_pkg:
@gen_pkg $(OUTPUT_DIR)/$(TARGET)_pkg.zip
其中gen_pkg 是一些用于生成固件更新包的脚本。
这将生成一个像这样的文件路径:out/fw_release_pkg.zip
理想情况下,我想要这样的东西:
generate_pkg:
@gen_pkg $(OUTPUT_DIR)/$(TARGET)_pkg_v$(FW_MAJOR_VERSION).$(FW_MINOR_VERSION).zip
会生成这样的文件路径:out/fw_release_pkg_v1.0.zip
现在我知道我可以在 makefile 中定义版本并在代码中引用它(基本上相反),但这有两个问题:
每次我更改 makefile 都会触发整个代码的编译,这需要几分钟时间。
我有两个独立的构建配置(发布和调试),每个都使用自己的 makefile,这需要我分别更新这两个配置。
【问题讨论】:
-
也许您可以在
Makefiles 中包含include version.make... -
如果您使用的是
GNUmake,那么您的两个问题就不存在了,因为您可以轻松地包含具有适当依赖关系的真实版本文件。以你的方式做(从源代码中检索)应该只在......好吧我什至想不出应该做的情况。版本编号是一个核心问题,在抽象阶梯上比某些常量高一级。