如何使用autoconf宏有條件地更改configure腳本中的值或通過AC_OUTPUT輸出的Makefile中的值。將autoconf中的共享庫ELF項目移植到OS X中
目標是使用AC_CANONICAL_TARGET或其他方式來確定我在OS X上,然後允許我的Makefiles通過刪除-shared並用-dylib_install_name替換-soname來調整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的第二個和第三個參數中設置局部變量來解決這個問題。它似乎工作,我只是很難理解這些參數實際上是殼牌執行,所以你可以像使用其他變量一樣使用這些變量。 – 2010-07-04 10:46:08
我不確定你在做什麼,但它聽起來像是在嘗試抽象平臺特定的東西來構建共享庫。如果是這樣,只需使用libtool - 這就是它的存在! – 2010-09-27 03:47:12