【发布时间】:2010-07-04 01:17:49
【问题描述】:
如何使用 autoconf 宏有条件地更改配置脚本或 Makefile 中的值,它通过 AC_OUTPUT 输出。
目标是使用 AC_CANONICAL_TARGET 或其他方式来识别我在 OS X 上,然后通过删除 -shared 并将 -soname 替换为 -dylib_install_name 来允许我的 Makefile 适应 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] 但我如何访问这些值?
非常感谢您的任何帮助。
【问题讨论】:
-
我想我已经通过在 AC_COMPILE_IFELSE 的第二个和第三个参数中设置局部变量来解决这个问题。它似乎有效,我只是很难理解这些参数实际上是 Shell 执行,因此您可以像使用其他任何变量一样使用这些变量。
-
我不确定你在做什么,但听起来你正在尝试抽象平台特定的东西来构建共享库。如果是这样,只需使用 libtool - 这就是它的用途!