Я написал небольшой инструмент командной строки, который включает в себя некоторый код GPL. Все идет гладко Используя ОС 10.6.
Используемый внешний код имеет заголовочный файл config.h, созданный путем вызова autoconf.
Я хотел бы развернуть инструмент для разных версий ОС. Таким образом config.h может выглядеть как
// config.h
#if MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_4
// autoconf created config.h content for 10.4 comes here
#elif MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_5
// autoconf created config.h content for 10.5 comes here
#elif MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_6
// autoconf created config.h content for 10.6 comes here
#else
#error "muahahaha"
#endif
Как настроить autoconf на использование /Developer/SDKs/MacOSX10.XXXX.sdk/usr/ при создании файла config.h?
Чтобы проверить это, я запустил
#!/bin/bash
# for 10.6
export CC="/usr/bin/gcc-4.2"
export CXX="/usr/bin/g++-4.2"
export MACOSX_DEPLOYMENT_TARGET="10.6"
export OSX_SDK="/Developer/SDKs/MacOSX10.6.sdk"
export OSX_CFLAGS="-isysroot $OSX_SDK -arch x86_64 -arch i386"
export OSX_LDFLAGS="-Wl,-syslibroot,$OSX_SDK -arch x86_64 -arch i386"
export CFLAGS=$OSX_CFLAGS
export CXXFLAGS=$OSX_CFLAGS
export LDFLAGS=$OSX_LDFLAGS
перед вызовом ./configure на ОС 10.6.
Я знаю, что скрипт configure ищет файл libintl.h, которого нет в «out of box 10.6 / SDK», но он присутствует на локальной машине в каталоге / usr / local
Заголовочный файл config.h, созданный описанным выше способом, содержит информацию о том, что libintl.h находится в системе, поэтому «связать» autoconf только с SDK не удалось.
Это происходит потому, что ... "у нас нет хрустального шара"? :). Или это неправильная «настройка» / flag-export перед запуском autoconf, что, я надеюсь, имеет место? Если так, то каков будет правильный способ установки переменных envvariable?
Большое спасибо заранее.
Редактировать. Похоже
#!/bin/bash
#set to gcc-4.0 for 10.4
export GCC_VERSION="gcc-4.2"
#set to g++-4.0 for 10.4
export GPLUSPLUS_VERSION="g++-4.2"
# MacOSX10.4u. MacOSX10.5, MacOSX10.6
export OSX_SDK="/Developer/SDKs/MacOSX10.6.sdk"
# 10.4, 10.6, 10.6
export MACOSX_DEPLOYMENT_TARGET="10.6"
export CC="$GCC_VERSION -isysroot $OSX_SDK -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
export CCX="$GPLUSPLUS_VERSION -isysroot $OSX_SDK -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
export CFLAGS="$CFLAGS -isysroot $OSX_SDK -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
export CXXFLAGS="$CXXFLAGS -isysroot $OSX_SDK -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
export LDFLAGS="$LDFLAGS -isysroot $OSX_SDK -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
сделал свое дело :) В любом случае, спасибо.