Что такое бустерный журнал, как его получить и как его построить?
Итак, я слышал хорошие вещи о бугеле. Это утверждает его существование:
http://boost-log.sourceforge.net/libs/log/doc/html/index.html
Это учебник:
http://boost-log.sourceforge.net/libs/log/doc/html/log/tutorial.html#log.tutorial.trivial
Однако, форсированный журнал не является частью повышения. Следовательно, не в регулярной ветки boost.
Здесь можно загрузить дополнительный буфер:
http://sourceforge.net/projects/boost-log/
Возможно, я просто слишком неопытен, но я считаю, что инструкции по установке очень плохие. Тем не менее, после загрузки и копирования папок boost и lib в папку boost, я могу запустить bootstrap и bjam. Это приводит к ошибкам, связанным с версиями Boost.Filesystem, аналогичными тем, которые упомянуты здесь:
http://boost.2283326.n4.nabble.com/Boost-Log-compilation-on-msvc-2010-fail-td3488502.html
Рекомендация Эндрю Семашева (в ссылке выше) заключается в том, что "Пожалуйста, используйте Boost.Log v2 (из соединительной линии SVN)".
Глядя на https://boost-log.svn.sourceforge.net/svnroot/boost-log, я могу видеть только версию 1.
Глядя на http://svn.boost.org/svn/boost/sandbox/, я могу найти boost logging v2 от John Torjo. Однако только из синтаксиса, который не может быть журналом boost v2, о котором говорит Эндрю Семашев.
Увидев, что я трачу слишком много часов на это, я подумал, что я получу какую-то помощь, и, возможно, некоторые другие люди могут извлечь выгоду из этого поста и ответов и сэкономить некоторое время. Я не думаю, что на это был дан ответ раньше, и ответы, подобные этим изменениям, я предположил.
Итак, вот так: Что такое boost log v2, о котором говорит Эндрю Семашев? Это то же самое, что у Джона Торхо? Если нет, где я могу его найти? И как его построить?
Спасибо
P.S. Я должен упомянуть об этом в Windows с Visual Studio Express 2010
P.P.S. Угадайте, что "версия 2", которая, по-видимому, является только SVN, также имеет проблемы, но с этой строкой (см. Ответ Серхио ниже)
<toolset>msvc:<define>BOOST_FILESYSTEM_VERSION=2
в файле bjam, по крайней мере, я могу скомпилировать. Однако этот файл
#include <boost/log/trivial.hpp>
int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}
прямо из учебника, хотя и теперь компилирует и связывает, не производит никакого вывода...
Ответы
Ответ 1
boost log v2 - это просто то, что вы получаете, проверяя багажник, согласно тому, что говорит Андрей в сообщении, которое вы связываете.
действительно, похоже, что эта версия тоже имеет проблемы с компиляцией против boost:: filesystem v3.
если это также ваш случай, один способ обхода компиляции после добавления
<define>BOOST_FILESYSTEM_VERSION=2
в файл jamfile.
Если это не сработает, проверьте, строите ли вы одну поточную или многопоточную версию библиотек. многопоточный бут-журнал должен быть более проверенным (по словам Андрея).
надеюсь, что это поможет... Я не пробовал...
EDIT:
где добавить?
Я бы добавил его в раздел requirements
раздела boost-log/libs/log/build/Jamfile.v2
, shared
:
project boost/log
: source-location ../src
: requirements
<link>shared:<define>BOOST_LOG_DLL
<link>shared:<define>BOOST_FILESYSTEM_VERSION=2
EDIT: из комментария Cookie, BOOST_FILESYSTEM_VERSION=2
следует указать как
<link>msvc:<define>BOOST_FILESYSTEM_VERSION=2
не в shared
.
Ответ 2
Это метод, который я использовал для установки Boost.Log в моем ящике Linux. Перед созданием и установкой библиотек Boost важно иметь важное значение: убедитесь, что вы установили библиотеку потоков, например pthreads
. Большинство менеджеров пакетов должны иметь их.
Вот шаги сборки:
Если вы уже установили Boost из исходного кода, то его прекращение продолжит следующий шаг. В противном случае загрузите его из здесь (желательно последняя версия (v1.46). Я использовал v1.45). Извлеките библиотеки boost, скажем: /opt
. Мы можем создавать библиотеки вместе с Boost.Log.
- Загрузите Boost.Log из Sourceforge.
- Извлеките исходный архив Boost.Log в папку - скажем
/opt
. Скопируйте папку журнала в: /opt/boost-log-1.0/boost
в каталог источника ускорения /opt/Boost_1_45_0/boost
(предположив, что вы извлекли его в /opt
).
- Скопируйте папку журнала в:
/opt/boost-log-1.0/libs
в каталог boost libs /opt/Boost_1_45_0/libs
(предположим, что вы извлекли его в /opt
). Если вы не установили другие библиотеки Boost, выполните следующие действия:
-
cd /opt/Boost_1_45_0
-
.bootstrap.sh --show-libraries
- это список всех библиотек, которые будут созданы и установлены. Вы должны увидеть log
как часть его.
-
.bootstrap.sh --with-libraries=all --prefix=/usr/local --includedir=/usr/local/include --libdir=/usr/local/lib
-
./bjam install
Наконец, убедитесь, что $LD_LIBRARY_PATH
имеет /usr/local/lib
(путь, указанный в bjam
для установки встроенных библиотек) как часть его. Если вы не отредактируете свой ~/.bashrc
и добавьте следующее:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
Ответ 3
После многого поиска и тестирования этого я узнал.
-
Загрузите желаемый Boost (я тестировал его на стабильном выпуске 1.51)
-
Выполните бут-бут из здесь и скопируйте <boost-log>/boost/log
и <boost-log>/libs/log
в <boost>/boost/log
и <boost>/libs
-
Убедитесь, что у вас есть поддерживаемый компилятор (моя проблема в том, что!. Он работал с gcc 4.1.7)
-
Run
./bootstrap.sh --with-libraries=all --prefix=<dir_to_install>
и
./b2 address-model=32
Если все идет по плану, будет создан каталог <boost>/stage/libs
с скомпилированными библиотеками (в том числе libboost_log.so)
Примечания:
-
Я не уверен, почему, но префикс не работал. Я ожидал увидеть библиотеки, построенные там.
-
Используйте b2
not bjam
.
-
Не нужно изменять Jamfile
в <boost-log>
.
-
У меня есть куча предупреждений, но нет при создании журнала.
Я надеюсь, что это поможет кому-то.
Ответ 4
Если я правильно интерпретирую Эндрю, его рекомендация состоит в том, чтобы не использовать одну из упакованных версий Boost.Log, а выполнять проверку SVN из репозитория SVN с буфером в SourceForge. Я быстро просмотрел файлы в багажнике и не могу найти ссылку на v1.
И нет, я почти уверен, что он не говорит о John Torjo Boost.Log v2, но более новая версия его Boost.Log, которая еще не была упакована для релиза.
Мы используем Boost.Log, и до сих пор я доволен этим; ваш вопрос на самом деле помог мне разобраться, что делать, чтобы построить Boost.Log с 1.46.1...
Ответ 5
Неизвестный символ в text_file_backend.cpp в строке 1197 при построении boost-log-1-1 с boost 1.51.0
Я использую Windows MSVC 2010, но я подозреваю, что проблема, которая у меня была, может быть распространена и на других платформах. Я скопировал источники boost.log в исходное дерево boost 1.51 и запустил bootstrap.bat и. \B2 в соответствии с инструкциями. Сбой сборки, жалуясь, что get_generic_category() является неизвестным символом в text_file_backend.cpp в строке 1197
Я изменил строку 1197 text_file_backend.cpp, чтобы теперь она читала
system::error_code(system::errc::io_error, system::generic_category()));
и я снова запустил сборку. Сборка работала.
Я надеюсь, что это поможет кому-то другому, у которого есть проблемы с созданием библиотеки буфера с boost 1.51
Подробнее об этом изменении см. http://www.boost.org/doc/libs/1_51_0/libs/system/doc/reference.html#Deprecated-names.
Изменить: я просто попробовал снова использовать источники бухгалтерии напрямую из Subversion trunk, и он скомпилировал OK. Таким образом, решение: игнорировать boost-log 1.1 и использовать соединительную линию Subversion.