automake < 1.16 无法正确生成测试的 Makefile
自动Make < 1.16在 Sources 中不能正确处理可变扩展,导致 " 进行测试 " 失败。 我成功地从10岁的Ubuntu 16 LTS VM中制造出卷曲,这种卷曲具有自动制作1.15,但`做测试'因变种扩张不良而失败。 我想今年早些时候它起作用了,我不确定,所以这个变化大概是最近提出的.
git 干净 - fdx
自定义 - fi
.../配置...
生产
进行测试 # 此步骤失败`制造[2]:*** 没有规则让目标".deps/perf.Po",停止.
我检查了. 代码目录 找到一个"$(BUNDLE)". Po ' 文件(实际名称),它也出现在其他测试目录中:
拥有者@ubuntu1604-x64-vm:~/curl$ find - name '$ (BUNDLE). 阿宝
./测试/tunit/.deps/美元(BUNDLE)。
./测试/libtest/.deps/$(BUNDLE). Po.
./测试/服务器/.deps/美元(BUNDLE)。
./测试/单位/.deps/美元(BUNDLE)。
./测试/perf/.deps/$(BUNDLE). Po.这似乎是由于对卷曲的修改,使一些测试目录默认进行统一构建. 它们现在有一个在 Makefile.inc 中指定的 BUNDLE 名称,这是统一文件的名称,其中所有 c 文件 和 头文件 等 都包含在一个捆绑文件中 。 然后在 Makefile.am 中使用这个可变名称,例如“nodist [dirname] SOURCES = $(BUNDLE)”c。
automake 1.15在 SOURCES中未适当具体处理此问题,导致被拆分文件以字元(BUNDLE)生成错误. Po ' ,后来作为实际名称(如 " perf. " )按制作方式正确扩展。 Po`见于产出),不存在。 我可以通过更改Sources来修正它,使用实际的名称而不是变量:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? diff -- git a/ tests/perf/Makefile.am 页面存档备份,存于互联网档案馆 b/ 测试/perf/Makefile.am 指数783cee1.07c6609 100644 -- -- a/测试/perf/Makefile.am b/测试/perf/Makefile.am $(top srcdir)/scripts/mk-unity.pl Makefile.inc $(FIRST C) $(UTISS C) @PERL@$(top srcdir)/scrips/mk-unity.pl -- -- 包括$(UTILS C) $(curlx c lib) $(TOOL C) -- -- test $(TESTS C) > $(BUNDLE).c。
无号 PROGRAMS = $(BUNDLE) -nodist perf Sources = $(BUNDLE).c. +nodist perf 资源 = perf.c LDADD = $(top buildingdir)/lib/libcurl.la@LIBCURL PC LIBS PRIVATE@ 欧元=美元。 c
我曾多次试图利用描述的方法(https://gensoft.pasteur.fr/docs/automake/1.163.3/Built-Sources-example.html)保存`$(BUNDLE)',但都没有奏效。 我问ChatGPT,为什么我试图保存$(BUNDLE)时,字面名称没有作用,它说,行为不是卷发中的bug,而是1.16之前的自动处理中的bug(https://lists.gnu.org/archive/html/bug-automake/2015-01/msg0001.html?utm source=ChatGPTZ.com)可能已经固定下来了。
我通过尝试自动Make -1.16 证实了这一点,它成功了。
导出 PATH = “$HOME/opt/automake-1.16/bin:$PATH ” 导出 ACLOCAL PATH ="/usr/share/ 本地:${ACLOCAL PATH:-}" git 干净 - fdx 自定义 - fi ./配置 . . . . . . .
内容来源: curl/curl