You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Autotools中为构建阶段生成的文件添加至EXTRA_DIST

Autotools中让构建生成文件纳入分发tar包的解决办法

你遇到的问题核心是:dist目标的执行逻辑默认先收集分发文件,再运行构建流程,所以构建阶段生成的文件此时还不存在,导致distdir-am找不到目标文件报错。有两种直接的解决方式:

方法一:给distdir目标添加前置依赖

在对应的Makefile.am中,给distdir目标添加生成该文件的前置规则,让distdir执行前先触发文件生成:

# 先定义生成vmod_vcs_version.txt的规则
src/vmod_vcs_version.txt:
	# 替换成你实际的文件生成命令,比如git describe --tags > $@

# 让distdir目标依赖这个生成规则,确保文件生成后再打包
distdir: src/vmod_vcs_version.txt

方法二:使用dist-hook钩子(更推荐)

Autotools提供了dist-hook钩子,会在分发目录创建完成后、打包前执行。你可以在这里生成文件并拷贝到分发目录中:

# 定义生成文件的规则
src/vmod_vcs_version.txt:
	git describe --tags > $@

# 利用dist-hook在打包阶段生成并复制文件
dist-hook:
	$(MAKE) src/vmod_vcs_version.txt
	cp src/vmod_vcs_version.txt $(distdir)/src/

这种方式不需要修改distdir的依赖链,逻辑更清晰,也能避免因为依赖顺序带来的其他问题。

用以上任意一种方法,都可以直接运行make distcheck,无需提前执行make生成文件。

内容的提问来源于stack exchange,提问作者Monseigneur Artous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:17:35