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

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 中提到的文件,从而导致错误。

任何人都有适当的解决方案,即使在 VPATH Build 中也包含 EXTRA_DIST 中提到的文件?

最佳答案

我不确定你收到的错误是什么,因为你没有报告它,但我找到了 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/

10-11 23:01
查看更多