gpt4 book ai didi

c - VPATH 构建中未考虑 EXTRA_DIST

转载 作者:行者123 更新时间:2023-12-01 12:38:09 24 4
gpt4 key购买 nike

我有一个具有以下目录结构(简化)的项目:

configure.ac
Makefile.am
samples
src/Makefile.am
tests/openssh_keys
tests/Makefile.am

顶层 Makefile.am 包含以下内容:

EXTRA_DIST = $(srcdir)/tests/openssh_keys \
$(srcdir)/samples
SUBDIRS = src . tests

“tests”中的“openssh_keys”目录包含单元测试所需的数据。当我使用“make dist”创建包时,EXTRA_DIST 中提到的所有文件都正确包含在包中。我在使用“make distcheck”时遇到了麻烦,因为这会创建一个 VPATH 构建。不幸的是,在运行测试用例时,EXTRA_DIST 中提到的文件未被复制导致错误。

有人有适当的解决方案来包含 EXTRA_DIST 中提到的文件,即使是在 VPATH 构建中也是如此?

最佳答案

我不确定您收到的错误是什么,因为您没有报告,但我找到了 your repository并看一看(我建议您看一下您在 configure.ac 中编写的内容,因为它可以简化,但这是一个不同的主题。)

从我在代码中看到的情况来看,问题在于您实际上并没有为测试二进制文件提供查找文件的路径,而是以 CWD 相关的方式查找它。但是 make distcheck(以及许多发行版)使用树外构建,其中 $(srcdir) 不是 .,因此它失败了.

EXTRA_DIST 不会帮助你:它只会告诉 automake 复制 tarball 中的文件,但不会从 $(srcdir) 中复制出来。相反,您应该为测试代码本身提供一种了解 $(srcdir) 目录在哪里的方法。由于您没有使用测试驱动程序或脚本,因此我的最少更改建议是

pam_openssh_x509_check_CPPFLAGS = -DKEYSDIR="\"$(srcdir)/openssh_keys\""

然后把测试源改成

    char *directory = KEYSDIR;
char *oneliner = KEYSDIR "/ssh_rsa.txt";

这样它会在相对路径中找到它们 (../../tests/openssh_keys)。

关于c - VPATH 构建中未考虑 EXTRA_DIST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com