makefile - 将变量从 Makefile 传递到可执行文件的最佳方法是什么?
问题描述
我想在编译时在 Makefile 中生成一个变量,并在运行时在我的可执行文件中使用它。
最小示例:在 Makefile 我生成变量COMMIT_ID
,其中包含最新提交的 ID:COMMIT_ID=$(git rev-parse --verify HEAD)
。
Makefile 还会生成一个可执行文件,例如executable.elf
. 生成的C
源代码executable.elf
打印COMMIT_ID
.
最好的方法是什么?
解决方案
书呆子狙击手 HardcoreHenry 诱使我找到更好(或至少不同)的解决方案。想出了这个,在存储库中有一个文件,其名称表示最后一次构建存储库的提交:
COMMIT_ID := $(shell git rev-parse --verify HEAD)
# target is made if it does not exist
$(COMMIT_ID).commit_id:
@# clean other commits than current
rm -f *.commit_id
@# placeholder for current commit
touch $@
commit_id.h: $(COMMIT_ID).commit_id
echo "#define COMMIT_ID ${COMMIT_ID}" > $@
推荐阅读
- flutter - StreamBuilder 数据 == null
- typescript - 为什么@typescript-eslint/parser 包含在我的 tsconfig.json 中配置的文件之外的文件?
- python - 如何在不锁定执行文件夹的情况下从 Python 启动进程?
- jenkins - java.lang.NullPointerException:无法调用方法
- python - 在多索引数据帧上计算基于时间的滚动平均值
- python - 在目录外运行脚本时出现 Python3.6 ImportError。在同一目录中正确运行
- php - 如何根据检索到的列类型为 bind_param 动态分配正确的类型?
- javascript - push() 更新数组时无法比较两个时间点的数组长度?
- javascript - 如何根据列值对每一行显示复选框 - JQuery DataTable
- javascript - 如何替换 HTML 字符串中的 value 属性?