Я настраиваю новый проект C ++ (в Xcode 4.6) и очень хотел бы использовать возможности нового стандарта C ++ 11 (лямбда-выражения, auto и т. Д.). Я пытаюсь (статически) связать Научную библиотеку Гну (GSL) с этим проектом, используя ответ Дарсона на этот предыдущий вопрос Однако в его ответе предлагается изменить компилятор на LLVM GCC 4.2, который не поддерживает новые функции C ++ 11.
Когда я переключаюсь на компилятор Apple LLVM 4.2 по умолчанию, сборка завершается неудачно, и я получаю длинный список ошибок, которые XCode возвращает к семантическим проблемам (необъявленные идентификаторы, имена неизвестных типов и т. Д.) В заголовках нового STL «libc ++».
Итак, мой вопрос: Кто-нибудь нашел способ использовать GSL в новом стандарте C ++ 11? Это не обязательно должно быть в Xcode, мне удобно использовать любую (UNIX) IDE или среду сборки.
Я смог решить свой собственный вопрос, и я подумал, что поделюсь им с теми, кто тоже может с этим бороться.
Как я и подозревал, проблема возникла из-за того, что моя установка GSL (из macports) была построена на «старом» STL (libstdc ++). Следовательно, мое решение состояло в том, чтобы перекомпилировать GSL против «нового» STL (libc ++). Это легко сделать, распаковав исходники и запустив
./configure CC=clang CFLAGS="-stdlib=libc++" LDFLAGS="-stdlib=libc++"
Я также добавил --disable-shared
построить только статическую библиотеку, и --prefix=...
установить путь сборки. Тогда все, что осталось, это бежать make
а также make install
,
Других решений пока нет …