У меня есть проект C++ 11, который использует Google Test, и он отлично работает в Linux. На Mac мне больше сложно интегрировать его в мою базу кода. Проблема заключается в том, что, хотя мой код использует C++ 11, в коде Google используется TR1. В результате структуры данных TR, такие как enum
и unordered_set
, включены по-разному.Объединение C++ 11 и TR1-зависимого кода в OSX?
Образцы Google Test строят и работают идеально, как предусмотрено. Образцы также строят просто отлично, если я использую clang ++ вместо g ++. (Мой код работает только на clang ++, поэтому я использую его для сборки.) Наконец, код Google также строит и запускает, если я использую -std=c++11
.
Однако, тест Google не построить с помощью clang ++ на моем mac, если я использую -stdlib=libc++
. Он сообщает, что он не может найти tr1/кортеж, что, конечно, верно. Это проблема, потому что мой код не строится, если я использую -stdlib=libstdc++
(или нет аргумента stdlib
).
Конечно, я мог бы переключить весь свой код на более старый. Это, однако, чрезвычайно yuck. Есть ли способ заставить эти базы кода жить счастливо бок о бок на Mac?
Мой код успешно работает с тестом Google с использованием g ++ 4.6.3 на компьютере Ubuntu 12.04. Mac работает под управлением OSX 10.8.3. Он работает g ++ 4.2.1 и clang 4.2 ++.
Спасибо за любую помощь, Дэвид
PS: Я несколько новых для C++, так что простите меня, если это глупый вопрос.
Редактировать: Изменено «OS/X» на «OSX». (Да, я что старый.)
Какие компиляторы и какие версии вы используете на MacOSX? Я считаю, что если вы построили GCC 4.8 на своем Mac, он скомпилирует ваш код, а также Linux! Большинство Linux сегодня имеют более новый GCC, чем 4.2! –
Базиле, это было! Спасибо. –