Я хочу перенести довольно большое и все еще растущее приложение C++ с ПК на Mac и продолжать поддерживать параллельную разработку на обеих платформах. На ПК мы используем MSVC2010 и внедряем несколько функций C++11. На Mac мы используем XCode 4.0.2. Чтобы улучшить зависимость от платформы и поддержать встроенную сборку, которую мы используем, мы развертываем компилятор Intel в обоих случаях. Однако компилятор не поставляется с библиотекой, поэтому мы полагаемся на те, что поставляются поставщиками. На Mac это означает отсутствие поддержки библиотеки C++11 для функций, которые мы очень хотим использовать, таких как std::forward и так далее. Я не могу собрать libc++ с компилятором Intel на Mac, иначе мои проблемы будут решены. Есть ли способ обойти это, кроме как использовать наши собственные библиотеки?
Как я могу получить поддержку библиотеки C++11 с помощью компилятора Intel в Mac OSX?
Ответы (2)
Если вы действительно не можете переключиться на другой компилятор на Mac, я бы посоветовал связаться со службой поддержки пользователей Intel, чтобы сообщить им, что поддержка C++11 важна для вас, и спросить их, насколько активно они внедряют ее теперь, когда новый язык является стандартом ISO.
Вполне возможно, что они также могут знать о работающей библиотеке.
person
Clare Macrae
schedule
12.09.2011
Clang и Intel 15 поддерживают C++11 на Mac и Linux. Официальные веб-сайты описывают состояние функций C++11 в Clang и компиляторы Intel.
На Mac компилятор Intel использует системную библиотеку C++, которая предположительно связана с включенным набором инструментов Clang/LLVM.
$ otool -L threads
threads:
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
Программа threads
может быть любой программой, которая вызывает вызов std::thread
, например
#include <thread>
int main()
{
std::thread::id id;
}
person
Jeff Hammond
schedule
22.03.2015
Нужна цитата. В частности, вам нужно указать, какая стандартная библиотека будет использоваться ICC.
- person Potatoswatter; 22.03.2015
Я не знаю, как процитировать собственное оригинальное исследование по этой теме, т.е. проверка таких кодов, как github.com/jeffhammond/HPCInfo/ blob/master/c%2B%2B11/ отлично работает с Intel 15.
- person Jeff Hammond; 23.03.2015
Пожалуйста, удалите свой отрицательный голос сейчас, так как я процитировал именно то, что вы просили.
- person Jeff Hammond; 23.03.2015
Да, libc++ — это стандартная библиотека Clang. Спасибо! (Кстати, этот сайт предпочитает описание воспроизводимого процесса цитированию. Так что вы можете сказать
icc - < (echo '#include <iostream>'; echo 'int main() { std::cout << "hi\n"; }'); otool -L a.out
, если это работает. Или, не предоставляя инструкций, просто упомяните, что вы скомпилировали программу и использовали otool
. На SO много ленивых ответов , так что просто постарайтесь не выглядеть так.)
- person Potatoswatter; 24.03.2015
std::forward
в частности, но clang (компилятор C++ llvm) поддерживает многие функции C++11 и поставляется с Xcode 4.x. - person Richard   schedule 24.08.2011