Autoconf 宏AC_REQUIRE_AUX_FILE
可用于注册构建过程中所需的辅助文件。
- 微距:
AC_REQUIRE_AUX_FILE (file)
声明在上面定义的目录中需要
file
。在Autoconf中,此宏不执行任何操作:其唯一目的是由第三方工具跟踪以生成预期的辅助文件列表。例如,它由AC_PROG_INSTALL
(参见特定程序)或AC_CANONICAL_BUILD
(请参阅 Canonicalizing )等宏调用,以注册所需的辅助文件。
如果未使用宏(AC_CONFIG_AUX_DIR
中的${auxdir}
,则通过AC_CONFIG_AUX_DIR
注册的目录或AC_REQUIRE_AUX_FILE
文档中所述确定的默认目录中存在文件。以下)。这是手册上面引用的“上面定义的目录”。
Automake uses the information将这些辅助文件添加到分布式文件列表中。
AC_REQUIRE_AUX_FILE([file])
对于每个
file
,Automake将确保辅助目录中存在AC_CONFIG_AUX_DIR
,否则会抱怨。它还会自动分发文件。此宏应由第三方Autoconf宏使用,该宏需要在上面configure
指定的aux目录中的某些支持文件。请参阅 Autoconf手册中的查找${auxdir}
输入。
从这个文档中 - 我可以找到关于这个主题的全部内容 - 我假设我也应该能够在./
./Makefile.am
./build-aux/
./build-aux/bar/
./build-aux/bar/baz.txt
./build-aux/foo.txt
./configure.ac
的子目录中列出文件。
但是,以下示例因失败而失败。
鉴于此目录结构
configure.ac
使用以下AC_PREREQ([2.69])
AC_INIT([example], [1.0], [bugs@example.com])
AC_CONFIG_AUX_DIR([build-aux])
AC_REQUIRE_AUX_FILE([foo.txt]) # this works
AC_REQUIRE_AUX_FILE([bar/baz.txt]) # this does not work
AM_INIT_AUTOMAKE([foreign])
AC_OUTPUT([Makefile])
Makefile.am
和空autoreconf -ivs
,运行${auxdir}
失败。
autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal autoreconf: configure.ac: tracing autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf autoreconf: configure.ac: not using Autoheader autoreconf: running: automake --add-missing --no-force configure.ac:5: error: required file 'build-aux/bar/baz.txt' not found configure.ac:6: installing 'build-aux/install-sh' configure.ac:6: installing 'build-aux/missing' autoreconf: automake failed with exit status: 1
具有讽刺意味的是,错误消息确切地命名了正确的文件。
我认为错误的错误消息是由函数rewrite_inputs_into_dependencies
触发的,但由于我的 Perl 技能有限,我无法理解错误的原因。
所以,我的问题是:
AC_REQUIRE_AUX_FILE
的子目录中命名文件?如果有一个简单的解决方法可以达到与EXTRA_DIST
中列出文件相同的效果,我也很高兴知道这一点。请注意,我正在编写一个应该由其他人使用的 Autoconf 宏,因此我无法直接将文件添加到Makefile.am
中的{{1}}变量。 / p>