2

如何使用 autoconf 宏有条件地更改配置脚本或 Makefile 中的值,它通过 AC_OUTPUT 输出。

目标是使用 AC_CANONICAL_TARGET 或其他方式来识别我在 OS X 上,然后允许我的 Makefile 通过删除 -shared 并将 -soname 替换为 -dylib_install_name 来适应 LDFLAGS。

所以我基本上需要学习如何使用检查目标主机的条件语句来修改 configure.ac 文件中的 AC_SUBST 值或局部变量。

我必须补充一点,我一直在尝试使用 AC_COMPILE_IFELSE 和 AC_LANG_PROGRAM 来编译这段代码。

#include <unistd.h>
#ifndef __APPLE__
error: This is not apple Darwin
#endif

虽然我没有收到任何错误,但我无法真正确认它是否有效。当我在 FreeBSD 或 Darwin 上运行新脚本时,没有与之相关的输出。我也总是使用 autoconf -Wall。

AC_COMPILE_IFELSE 的第二个和第三个参数是 [is_darwin=yes], [is_darwin=no] 但我如何访问这些值?

非常感谢您的任何帮助。

4

1 回答 1

0

好吧,只是为了让问题脱离堆栈,我将通过说 AC_COMPILE_IFELSE 的第二个和第三个参数中的那些变量在 configure.ac 脚本中作为 SHELL 变量来回答它。事实上,我通过在这两个参数中放置多个变量定义来解决这个问题,因为它们接受多行 Shell 代码,而不仅仅是一个变量定义。

于 2010-07-05T16:34:23.583 回答