在进行检查之前,使用automake安装目标

时间:2011-11-22 08:02:34

标签: autoconf automake

如何在执行检查脚本之前让automake安装其中一个库?

该项目为我们动态加载的一个库(通过调用dlopen)构建了一个模拟测试库。问题是我们无法覆盖我们的库路径进行测试,因为仍然有许多其他库必须加载(这些库由其他组件安装,而不是由这个makefile直接编译)。

如果我可以在运行检查脚本之前简单地安装一些库,那么这将为我节省很多工作。如果我必须将它放在一个单独的makefile中并先调用它,那么很好,没问题。基本上我只需要运行make check来做正确的事情。

2 个答案:

答案 0 :(得分:4)

make check目标应该在安装之前测试包。 Automake无法解决这个问题。我们的想法是,如果make check失败,您可能决定不安装软件包。 (另外,如果您在make check期间以某种方式破解规则,则可能会中断make distcheck。)

在安装库之前使用本地库的常用方法是在测试期间将.:添加到LD_LIBRARY_PATH的值。使用libtool构建本地库并链接到它们将为您处理所有这些可重复的详细信息:构建树中的可执行文件libtool输出是在调用正确的exectutable之前设置这些变量的脚本(隐藏在其他位置) ),以确保他们使用本地库。

另一种解决方案,如果您仍希望在安装后执行测试,则不要使用make check而是使用make installcheck。只有在用户运行make installcheck后,才会运行make install。您必须编写自己的installcheck-local规则。

答案 1 :(得分:0)

我找不到任何官方/正确的方式,但以下似乎有效。向check添加新依赖项并使用安装库目标,但会覆盖安装的库。例如:

check_dummy: lib_LTLIBRARIES = libdummy.la
check_dummy: install-libLTLIBRARIES
check: check_dummy

这个GNU Make具体我相信。