четверг, 2 сентября 2010 г.

Сборка log4cxx 0.10.0 в Visual Studio 2010. Детали

Первый пост из серии «Простой проект с использованием CMake, log4cxx, boost». Рассмотрим сборку log4cxx из исходников под Windows с использованием Visual Studio 2010. Соответствующий пост с отдельными деталями здесь.

log4cxx — библиотека от Apache, предназначенная для организации логирования в проектах на C++. Создается впечатление, что разработка заглохла, но библиотека довольно фичаста, плюс семейство библиотек log4-что-то является одним из стандартов в своей области. Поэтому будет использовать ее, хотя стоит обратить внимание и на Boost.Log, и на google-glog.

В качестве базы использована официальная инструкция по сборке. Начнем со скачивания исходников. Необходима сама библиотека (apache-log4cxx-0.10.0.zip) и две вспомогательных для нее: Apache Portable Runtime (apr) и APR-util (там же). Последние версии на момент написания статьи 0.10.0, 1.4.2 и 1.3.9 соответственно. На странице с библиотеками нужно скачивать версии Win32 Source, чтобы использовались правильные символы конца строки.

После скачивания архивов распаковываем их в одну папку. Директории вспомогательных библиотек нужно переименовать в apr и apr-util, убрав из названия номер версии.

После этого необходимо запустить два bat-файла из папки apache-log4cxx-0.10.0, configure.bat и configure-aprutil.bat. Можно использовать проводник, но я предпочитаю консоль. Второй батник использует sed, который должен быть доступен в $PATH. Скачать его можно здесь. Подробности установки sed рассматривать не будем, если нужно, можно задать вопрос в комментарии.

Итак, запускаем батники:

После этого необходимо пропатчить исходники, чтобы они собирались 2010-ой студией. Заходим в Jira проекта и скачиваем прикрепленный к талону патч. Для его применения можно использовать TortoiseSVN: щелкаем по файлу правой кнопкой и выбираем пункт TortoiseSVN --> Apply patch. Черепаха спросит, к файлам из какой папки должен быть применен этот патч. Укажем папку, куда были распакованы архивы. После этого в маленьком окошке со списком файлов выберем все cpp-файлы и все h-файлы кроме log4cxx.h и log4cxx_private.h


Щелкаем по ним правой кнопкой и выбираем пункт Patch Selected. Применение изменений должно пройти без ошибок, никакой файл из приведенных в списке не должен стать красным.

После применения патча запускаем VS и открываем в ней apache-log4cxx-0.10.0\projects\log4cxx.dsw. Соглашаемся со всеми предложениями, связанными с конвертацией в проект нового формата. Во время этого процесса студия потеряет данные о зависимости log4cxx.dll от других вспомогательных библиотек, поэтому проект соберется, но не слинкуется. Восстановим зависимости, как указано в другом посте, упомянутом выше.

В Solution Explorer'е выбираем проект log4cxx и открываем его свойства. Открываем страницу свойств Configuration Properties --> Linker --> General и для конфигурации Debug в пункте Additional Library Directories указываем следующее, говоря тем самым линковщику, где искать дополнительные библиотеки:
..\..\apr\LibD
..\..\apr-util\LibD
..\..\apr-util\xml\expat\lib\LibD



Затем необходимо указать с какими именно дополнительными библиотеками нужно осуществлять линковку. Для этого в том же окне на странице Configuration Properties --> Linker --> Input выбираем пункт Additional Library Dependencies. Там указываем дополнительные библиотеки к уже имеющимся:
apr-1.lib
aprutil-1.lib
xml.lib

Для конфигурации Relese нужно сделать все тоже самое, с тем лишь исключением, что вместо папки LibD нужно будет указывать LibR. Сохраняем изменения и запускаем компиляцию, щелкнув по проекту log4cxx правой кнопкой и выбрав пункт Build.

После компиляции в папках apache-log4cxx-0.10.0\projects\Debug и apache-log4cxx-0.10.0\projects\Release появятся бинарные файлы. Нас интересует log4cxx.dll и log4cxx.lib, позже будем ссылаться на них как на дебажные и релизные версии log4cxx.

Update: VS 2010 на XP почему-то может не собрать проект, ссылаясь на ошибку, связанную с mt.exe. Помогает сборка по частям: aprutil, xml, apr и log4cxx.

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

Отправить комментарий