【问题标题】:Autoconf: Check if a program in an unsupported language compilesAutoconf:检查不受支持语言的程序是否编译
【发布时间】:2010-12-03 01:03:44
【问题描述】:

为了有条件地启用自动工具项目的一部分,我需要检查是否可以通过自动工具不支持的语言的短程序存根进行编译。

我需要带有任意编译器可执行文件的AC_TRY_COMPILE 之类的东西——创建一个临时文件,向其中写入一段代码,然后尝试调用编译器(之前通过AC_CHECK_PROGS 找到)返回等于零的退出代码与否。

最优雅/最常见的方法是什么?

【问题讨论】:

标签: build autotools autoconf configure


【解决方案1】:

AC_TRY_COMPILE(已弃用并由 AC_COMPILE_IFELSE 取代)仅支持一组有限的语言:C、C++、Fortran 77、Fortran、Erlang、Objective C、Objective C++ (source)。

configure.ac 可以包含自定义 shell 代码 - 它只是被 autoconf 跳过(真的是 m4)。为什么不直接在 shell 中编写测试?如果您要使用多个测试,请将其包装在 AC_DEFUN 中。

【讨论】:

  • 这就是我最终所做的;我只是忘了在这里写下答案并将其标记为已接受 - 无论如何谢谢。
【解决方案2】:

要启用自动工具项目的可选部分,您应该使用--enable-something 选项。不要让它依赖于构建环境中当前可用的内容。这很容易掩盖自动构建中的错误。 (示例:众所周知,Linux 发行版会因为缺少构建依赖项或环境中的其他问题而发布残缺的软件包,在这种情况下,引发错误比静默处理更有帮助。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2012-05-02
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多