【问题标题】:Autoconf compilation of dependency before application应用前autoconf编译依赖
【发布时间】:2009-06-11 21:39:30
【问题描述】:

在过去的几天里,我一直在使用 autotools 工具,终于取得了重大进展。我遇到的一个问题是我有两个库需要在主应用程序代码之前编译。我不太确定该怎么做。我的目录结构如下,还有一个来自我的 configure.ac 的 sn-p。

AC_CONFIG_FILES([Makefile
         src/Makefile
         gtkworkbook/Makefile
         csv/Makefile])
AC_OUTPUT

我需要在 src/Makefile 之前编译 csv/Makefilegtkworkbook/Makefile;有没有办法指定这个?现在我收到一个关于应用程序编译过程中不存在的库 (csv) 的错误。

【问题讨论】:

    标签: makefile autotools autoconf automake


    【解决方案1】:

    AC_CONFIG_FILES() 中项目的顺序不影响构建顺序。如果您使用的是我假设您使用的 automake,它将按照您在每个 Makefile.am 的 SUBDIRS 列表中列出目录的顺序遍历您的目录树。

    话虽如此,您应该让 AC_CONFIG_FILES() 中的项目顺序反映构建顺序,以保持一致性/可维护性。

    您的顶级 Makefile.am 的 SUBDIRS 如何按所需顺序构建的示例:

    SUBDIRS = csv gtkworkbook src
    

    此外,对于这个简单的情况,您不需要 AC_CONFIG_FILES() 和 AC_OUTPUT()。您可以将列表目录传递给 AC_OUTPUT():

    AC_OUTPUT([
        Makefile
        src/Makefile
        gtkworkbook/Makefile
        csv/Makefile
    ])
    

    【讨论】:

    • 即您需要 SUBDIRS=csv gtkworkbook src(是的,我正在输入答案,就像 anthony 所做的那样!)
    • 我这样做了,但似乎没有奏效。顶层目录中的 Makefile.am 具有相同的子目录,并且 AC_OUTPUT 也已更改。有什么建议吗?
    • 您确定您的 Makefile.am 中的更改已传播到您的 Makefile 吗?对于可以检测到的情况,GNU 会尝试自动执行此操作,但有时在编辑您的 configure.in 后需要重新生成。重新运行您的 autogen 脚本。
    • 如果您配置了 --enable-maintainer-mode,它通常只会将适当的重新生成规则添加到输出 Makefile 中。否则正如安东尼所说,如果顶级 Makefile 有错误的 SUBDIRS,则重新生成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多