将autoconf中的共享库ELF项目移植到OS X.

时间:2010-07-04 01:17:50

标签: c autoconf

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

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

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

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

#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]但是如何访问这些值?

非常感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

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