2012-07-24

[c++, boost] Сборка boost.log

Продолжая ковыряться с бустом...
Одна из первых библиотек, с которой начинается жизнь проекта - это библиотека логов. Возможно, раньше неё имеет смысл выбирать библиотеку юнит-тестов, но тут я свой выбор уже давно сделал, boost.test - аккуратная, проработанная, надёжная библиотека, поэтому искать что-то другое необходимости нет.
Собственно, в своё время, при выборе библиотеки для журналирования я остановил выбор на boost.logging v2 от John Torjo, однако развитие библиотеки остановилось в 2008 году. Сейчас в буст старается попасть свеженькая библиотека от Андрея Семашева - boost.log, поэтому было логичным посмотреть первым делом на неё.
При сборке ждал небольшой сюрприз - библиотека отказалась компиляться. Свежая версия взятая из транка тоже не собралась.
Кстати, эксперименты по сборке осуществляются довольно просто:
bjam --with-log --toolset=msvc-9.0
причём, на то, чтобы разобраться как запустить сборку ушло несколько минут - бустоводы явно стараются делать кривую обучения для новичков более пологой. Несколько лет назад сборка буста была _существенно_ сложнее и довольно плохо документирована. Ещё один жирный плюс разработчикам буста.
Разобраться в причинах ошибки удалось достаточно быстро (не во всех cpp были прописаны подключения требуемых библиотек), чуть больше времени заняли эксперименты по лечению проблемы.

По окончании сборки решил сообщить об ошибке автору boost.log, благо sf.net позволяет отправлять персональные сообщения. Тут ждали некоторые сюрпризы.
1. Несмотря на то, что sf.net поддерживает логин с google, open id, blogger и пачки других сайтов, отправлять сообщения при этом не позволяет - требует родной, сорсфоржный аккаунт.
2. Пришлось пойти искать старый, ещё начала двухтысячных, логин на sf.net. Оказалось, что аккаунт протух и залогиниться под ним нельзя.
3. Поплевался, но создал новый аккаунт.
В течении описываемых злоключений, пришлось трижды выставлять язык (sf.net постоянно терял его) и дважды указывать часовой пояс.
Мдямс... Видимо странные косяки в мелочах свойственны не крупным корпоративным продуктам, а крупным продуктам вообще - корпоративность тут второстепенна.

Завтра буду пристально смотреть на бустовые логи образца 2012 года.

Update. 24 июля 2012. Ответ Андрея Семашева:
Boost.Log не использует Boost.Chrono, и потому не должен включать заголовки этой библиотеки. Проблема в Boost.Thread, рекомендую создать тикет в http://svn.boost.org/trac/boost/ если проблема все еще не исправлена в релизном бранче boost.

Со своей стороны могу порекомендовать попробовать собрать библиотеку с макросом BOOST_THREAD_DONT_USE_CHRONO=1.
Update 2. 24 июля 2012. boost.log ревизия 694 на sf.net  :)

Комментариев нет: