AC_REQUIRE_AUX_FILE中是否允许包含目录的路径?

时间:2015-04-04 11:12:54

标签: gnu configure autoconf automake

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的子目录中命名文件?
  • 我做错了吗?
  • Automake 中是否有错误?

如果有一个简单的解决方法可以达到与EXTRA_DIST中列出文件相同的效果,我也很高兴知道这一点。请注意,我正在编写一个应该由其他人使用的 Autoconf 宏,因此我无法直接将文件添加到Makefile.am中的{{1}}变量。 / p>

0 个答案:

没有答案