Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Configuring and building the library

Boost , Chapter 1. Boost.Log v2 , Installation and compatibility

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Библиотека имеет отдельно скомпилированную часть, которая должна быть построена, как описано в руководствеGetting Started.. Однако следует отметить одну вещь. Если ваше приложение состоит из более чем одного модуля (например, exe и одного или нескольких dll), которые используют Boost. Библиотекадолжнабыть построена как общий объект. Если у вас есть один исполняемый файл или один модуль, который работает с Boost. Вы можете построить библиотеку как статическую библиотеку.

Библиотека поддерживает несколько макросов конфигурации:

Table 1.1. Configuration macros

Макро имя

Эффект

<BOOST_LOG_DYN_LINK>

Если оно определено в коде пользователя, библиотека предполагает, что двоичный файл построен как динамически загружаемая библиотека («dll» или «so»). В противном случае предполагается, что библиотека построена в статическом режиме. Этот макрос должен быть либо определен, либо не определен для всех единиц перевода пользовательского приложения, использующего журналирование. Этот макрос может помочь с автоматической связью на платформах, которые его поддерживают.

<BOOST_ALL_DYN_LINK>

То же, что и<BOOST_LOG_DYN_LINK>, но так же влияет и на другие библиотеки Boost.

<BOOST_USE_WINAPI_VERSION>

Влияет на компиляцию библиотеки и кода пользователя. Этот макрос специфичен для Windows. Выберите целевую версию Windows для различных библиотек Boost, включая Boost. Лог. Код, собранный для конкретной версии Windows, скорее всего, не будет работать на старых версиях Windows, но может улучшить производительность из-за использования новых функций ОС. Ожидается, что макрос будет иметь целое значение, эквивалентное<_WIN32_WINNT>

.

<BOOST_LOG_NO_THREADS>

Если определено, отключает многопоточную поддержку. Влияет на компиляцию как библиотеки, так и кода пользователей. Макрос автоматически определяется, если поддержка потоков не обнаружена.

<BOOST_LOG_WITHOUT_CHAR>

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

<BOOST_LOG_WITHOUT_WCHAR_T>

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

<BOOST_LOG_NO_QUERY_PERFORMANCE_COUNTER>

Этот макрос полезен только для Windows. Это влияет на компиляцию как библиотеки, так и кода пользователей. Если это так, то<QueryPerformanceCounter>из<timer>из<timer>. Это приведет к значительно менее точным показаниям времени. Макрос предназначен для решения возможных проблем с более ранними версиями процессора AMD Athlon, описанными здесьиздесь. Существуют также известные аппаратные сбои набора микросхем, которые могут препятствовать нормальному функционированию этого API (см.здесь).

<BOOST_LOG_USE_NATIVE_SYSLOG>

Влияет только компиляция библиотеки. Если по какой-то причине поддержка нативного API SysLog не обнаруживается автоматически, определите этот макрос, чтобы принудительно включить его

.

<BOOST_LOG_WITHOUT_DEFAULT_FACTORIES>

Влияет только на составление библиотеки. При определении, парсеры для настроек будут построены без каких-либо заводов по умолчанию для фильтров и форматировщиков. Пользователь должен будет зарегистрировать все атрибуты в библиотеке, прежде чем анализировать любые фильтры или формататоры из строк. Это может существенно уменьшить двоичный размер.

<BOOST_LOG_WITHOUT_SETTINGS_PARSERS>

Влияет только компиляция библиотеки. При определении, ни одно из объектов, связанных с парсерами для настроек, не будет построено. Это может существенно уменьшить двоичный размер.

<BOOST_LOG_WITHOUT_DEBUG_OUTPUT>

Это касается только библиотеки. Если определено, поддержка вывода отладчика на Windows не будет построена.

<BOOST_LOG_WITHOUT_EVENT_LOG>

Влияет только компиляция библиотеки. Если он определен, поддержка журнала событий Windows не будет построена. Определение макроса также делает ненужным набор инструментов компилятора сообщений.

<BOOST_LOG_WITHOUT_SYSLOG>

Влияет только компиляция библиотеки. Если определено, поддержка syslog backend не будет построена.

<BOOST_LOG_WITHOUT_IPC>

Влияет только компиляция библиотеки. При определении поддержки межпроцессных очередей не будет построено.

<BOOST_LOG_NO_SHORTHAND_NAMES>

Влияет только на компиляцию кода пользователя. При определении некоторые устаревшие сокращенные макро-имена не будут доступны.

<BOOST_LOG_USE_COMPILER_TLS>

Влияет только компиляция библиотеки. Этот макрос обеспечивает поддержку встроенных компиляторов для хранения потоков. Определение его может улучшить производительность Boost. Регистрация, если допустимы определенные ограничения использования. Смотрите ниже для большего количества комментариев.

<BOOST_LOG_USE_STD_REGEX>,<BOOST_LOG_USE_BOOST_REGEX>или<BOOST_LOG_USE_BOOST_XPRESSIVE>

Влияет только компиляция библиотеки. Определив один из этих макросов, пользователь может инструктировать Boost. Лог для использования<std::regex>,Boost.RegexилиBoost. Xpressiveвнутренне для фильтров соответствия струн, отсортированных от струн и настроек. Если ни один из этих макросов не определен, то Boost. Лог используетBoost.Regexпо умолчанию. Используя<std::regex>илиBoost.Regexобычно производит меньшие исполняемые файлы,Boost.Regexобычно также является самым быстрым во времени выполнения. ИспользованиеBoost.Xpressiveпозволяет устранить зависимость отBoost.Regexскомпилированного двоичного. Обратите внимание, что эти макросы не влияют нафильтрующие выражения, созданные пользователями.


Вы можете определить макросы конфигурации в командной строке<bjam>, например:

bjam --with-log variant=release define=BOOST_LOG_WITHOUT_EVENT_LOG define=BOOST_USE_WINAPI_VERSION=0x0600 stage

Однако более удобно определять макросы конфигурации в файле «boost/config/user.hpp», чтобы автоматически определять их как для библиотеки, так и для проектов пользователя. Если ни один из вариантов не указан, библиотека будет стараться поддерживать наиболее полную настройку, включая поддержку всех типов символов и функций, доступных для целевой платформы.

Библиотека журналов использует несколько других библиотек Boost, которые также требуют строительства. ЭтоBoost.Filesystem,Boost.System,Boost.DateTime,Boost.Threadи в некоторых конфигурацияхBoost.Regex. Обратитесь к их документации для подробных инструкций по процедуре строительства.

Следует добавить еще одну последнюю вещь. Библиотека требует, чтобы информация типа времени выполнения (RTTI) была включена как для компиляции библиотеки, так и для компиляции кода пользователя. Как правило, вам ничего не нужно, кроме проверки того, что поддержка RTTI не отключена в вашем проекте.

Notes about compiler-supplied intrinsics for TLS

Многие широко используемые компиляторы поддерживают встроенные внутренности для управления потоковым локальным хранилищем, которое используется в нескольких частях библиотеки. Эта функция также включена в стандарт C++11. Как правило, эти внутренние элементы обеспечивают гораздо более эффективный доступ к хранению, чем любая суррогатная реализация, будь то. Threadили даже собственный API операционной системы. Однако эта особенность имеет несколько оговорок:

  • Некоторые операционные системы не поддерживают использование этих свойств в случае, если TLS определен в общей библиотеке, которая динамически загружается во время выполнения приложения. Эти системы включают Linux и Windows до Vista. Windows Vista и более поздняя версия этой проблемы не имеют.
  • Доступ к TLS может быть ограничен глобальными конструкторами и деструкторами. По крайней мере, MSVC 8.0 в Windows, как известно, имеет эту проблему.

Библиотека предоставляет макрос конфигурации<BOOST_LOG_USE_COMPILER_TLS>, который позволяет использовать эту функцию, что улучшит производительность библиотеки за счет этих ограничений:

  • Исполняемый файл приложения должен быть связан с Boost. Библиотека журналов. Он не должен динамически загружаться во время выполнения.
  • Приложение не должно использовать журналирование в глобальных конструкторах или деструкторах.

Обратите внимание, что макрос<BOOST_LOG_USE_COMPILER_TLS>контролирует только использование TLS в Boost. Журнал, но не в других библиотеках, используемых Boost. Лог. Например,Boost.ASIOпо умолчанию использует TLS, поставляемые компилятором. Для того, чтобы увеличить Двоичные файлы журнала, полностью свободные от использования TLS, поставляемых компилятором, эта функция также должна быть отключена в этих других библиотеках (в случаеBoost.ASIOэто может быть достигнуто путем определения<BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION>при создании и использовании Boost).

Notes about native wchar_t support

Некоторые компиляторы, особенно MSVC, имеют возможность отключить нативный<wchar_t>тип, эмулируя его с помощью typedef для одного из стандартных интегральных типов. С точки зрения языка C++ это поведение не соответствует, но может быть полезно для совместимости с некоторым устаревшим кодом, который трудно обновить.

По умолчанию, Boost (и Boost). Строится он из дерева<wchar_t>. На момент написания этой статьи пользователю придется изменить Boost. Создайте, чтобы включить режим эмуляции. Можно построить буст. Зарегистрируйтесь в этом режиме, но есть несколько оговорок, которые нужно иметь в виду:

  • Составленный буст. Двоичные журналы будут экспортировать символы, соответствующие конфигурации, выбранной во время сборки. Код пользователя должен будет использовать ту же настройку, что и при создании Boost. Лог, иначе появятся ошибки привязки.
  • Поскольку в режиме эмуляции<wchar_t>неотличимо от одного из целых типов, некоторые части библиотеки могут вести себя иначе, чем в обычном режиме с нативным<wchar_t>. В частности, широкохарактерные буквы могут быть отклонены или отформатированы по-разному.
  • Режим эмуляции не тестируется, поэтому возможны неожиданные поломки.

Из-за этого использование режима эмуляции не рекомендуется и его следует избегать. В будущих выпусках библиотеки ее поддержка может быть удалена полностью.


PrevUpHomeNext

Статья Configuring and building the library раздела Chapter 1. Boost.Log v2 Installation and compatibility может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Installation and compatibility ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:33:09/0.011445045471191/1