2009-11-29 6 views
2

В настоящее время я разрабатываю OpenSolaris 2009-06. Документация Boost :: MPL, по-видимому, предполагает, что составители ВС - not supported (документ был последний раз обновлен в 2004 году). Документация верхнего уровня Boost, по-видимому, говорит о том, что поддерживаются солнечные компиляторы 5.10, и я полагаю, что это общий уровень поддержки или это включает MPL ?. У кого-нибудь есть какие-либо подробности о состоянии соответствия C++ для составителей солнца 5.10?Sun C++ Compilers and Boost

Я всегда мог компилировать с использованием GCC.

+6

Boost :: MPL, похоже, имеет обширный набор модульных тестов, вы можете попробовать запустить их под своим компилятором. Это должно дать вам самый последний статус поддержки, независимо от какой-либо документации. – liori

+0

Что сказал liori, но если вы хотите убедиться, что ваша среда работает, как и ожидалось, вам не с чем сравнивать. Вы должны найти документацию о том, чего следует ожидать, а затем запустить модульные тесты и посмотреть, являются ли они прогнозируемыми документами. –

+1

Спасибо, ребята, я сделал несколько прототипов с библиотеками MPL, и они, похоже, работают нормально (с некоторыми конструкциями, которые я пробовал). Однако код заканчивается выглядящим противным. Поэтому я думаю, что я перейду в генеративное программирование, возможно, используя Lua и нацелив C++ на STL и, возможно, на простые библиотеки BOOST. –

ответ

1

Наверное, так как точный ответ не был предоставлен Я должен опубликовать его сам.

opensolaris (2009.06) и boost-1.4.1, похоже, работают хорошо. ./bjam выбирает правильные переключатели и boost::mpl, похоже, хорошо работает с присутствующим компилятором солнца. Итак, насколько я могу судить, документация mpl о поддержке компилятора довольно устарела.

3

У меня был некоторый успех с компилятором Boost и Sun CC на Solaris 10, но это боль. Главное помнить, что вам нужно,

-library=stlport4 -features=tmplife -features=tmplrefstatic 

в вас CXXFLAGS все, что вам компилировать, все шаблоны только библиотеки я пытался, кажется, работают хорошо с этим, (пропустить все библиотеки, которые нуждаются в компиляции, see here for details)

Это означает, конечно, что вам придется перестроить любые библиотеки, на которые вам нужно ссылаться (вам было бы очень повезло, если они уже использовали stlport4).

К сожалению, это о единственной (слабо) веской причине для использования не подталкивания :-(

Sun C++ Frontend tails blog

+0

Компиляция не была проблемой, особенно с 1.41, поскольку они исправили скрипты сборки для использования stlport4. Проблема связана со специфическими особенностями конструкций метапрограммирования шаблона. –

+0

Если у вас есть миллионы строк устаревшего кода, построенного со старым stl, с которым вы должны ссылаться, это проблема! Тем не менее, некоторые из пакетов действительно работают с настройками компилятора по умолчанию, например Boost :: Tokenizer. –

+1

@Chris: Как насчет бинарников библиотек, скомпилированных со старым stl, когда у вас нет доступа к источнику? Теперь это расстраивает! –

2

Я боролся через эту проблему сам в прошлом, и это боль в Задняя часть

Чтобы быть более конкретным в ответе Криса Хуан-Ливера, вам действительно нужно использовать STLPort4 в компиляторах Sun. STL по умолчанию, поставляемый Sun, является неполным в соответствии с их собственной документацией (я буду отслеживать его на некоторые моменты). Другие варианты, которые упоминает Крис, полезны, но они не являются корнем p РОБЛЕМА.

Хорошая новость заключается в том, что Sun также поставляет STLPort версии 4 с их компиляторами, поэтому все, что вам нужно, это включить флаг «-library = stlport4», чтобы переключиться на него. Почему они поставляют две версии (одну полуразрушенную) STL, а не только одну версию , правильную версию, вне меня.

+1

Два слова: устаревший код. Там много материала, собранного со старой версией Sun STL, и вы не можете связывать библиотеки, скомпилированные с Sun STL и STLPort. (Я пытался.) Некоторые библиотеки доступны только с использованием старого Sun STL (включая библиотеку Oracle, которую я действительно хотел использовать около трех лет назад), и если вы собираетесь использовать их, вы собираетесь использовать старый сломанный STL. Да, я обнаружил, что это очень расстраивает. –

+0

Ах, очень хорошая точка. Я должен был подумать об этом, учитывая мои собственные переживания. –