【发布时间】:2018-06-25 13:34:29
【问题描述】:
我正在使用自动制作。
我希望每次运行“make”时都运行一个脚本。
此脚本执行 git diff 并生成 diff 的 MD5 和。
哈希在 repos_version.h 中写为 #define 例如:
#define REPOS_DIFF "-190886e9f895e80c42cf6b426dc85afd"
脚本仅在此文件不存在或差异与 repos_version.h 中的内容不同时才重写此文件。但是需要为每个 make 运行脚本。
main.c 包含 repos_version.h 并在运行可执行文件时打印出哈希。
这是 Makefile.am 的尝试 1
all: config.h
@chmod +x gen_diff_hash.sh
@./gen_diff_hash.sh
$(MAKE) $(AM_MAKEFLAGS) all-recursive
这项工作,但我收到以下错误
Makefile:1234:警告:覆盖目标 all'
Makefile:734: warning: ignoring old recipe for targetall' 的配方
这是 Makefile.am 的尝试 2
all-local:
@chmod +x gen_diff_hash.sh
@./gen_diff_hash.sh
main.c: repos_version.h
但是,这不起作用,因为 all-local 似乎运行得太晚了。 'make' 的第二次运行确实得到了预期的结果,但这不是跑步者。
所以两者都不是很好。 有任何想法吗? 我一直在阅读 automake hooks 文档,但看不到任何适合我需要的内容。
【问题讨论】: