为何发布压缩包中包含Makefile.am?实测移除后编译报错
问题与解决
问题描述
之前参考Stack Overflow的回答,误以为软件发布压缩包中不需要Makefile.am,于是做了如下测试:
- 下载libuv v1.44.2的发布压缩包并解压
- 将
Makefile.am重命名为Makefile.am.bak - 执行
./configure后运行make,出现报错:
tian@tian-B250M-Wind:~/Desktop/playground/garage/libuv-1.44.2$ make
make: *** No rule to make target 'Makefile.am', needed by 'Makefile.in'. Stop.
原因分析
不是所有项目的发布包都能完全脱离Makefile.am。有些项目的automake配置没做彻底的发布适配,生成的Makefile.in或configure脚本里依然保留了从Makefile.am更新Makefile.in的构建规则。当你移除Makefile.am后,make找不到这个依赖文件,就会抛出错误。
解决办法
- 直接将
Makefile.am.bak改回Makefile.am,让make能找到所需的依赖文件,即可正常构建 - 若确实不想保留
Makefile.am,可以手动使用发布包中已生成的Makefile.in(跳过从Makefile.am生成Makefile.in的步骤),但这种操作没必要,发布包中的Makefile.am本来就是项目构建流程的一部分,并非冗余文件
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

