Как установить Boost C++ на Ubuntu 22.04
Для разработчика C++ наличие всех необходимых инструментов для облегчения разработки является дополнительным преимуществом. Библиотека Boost C++ содержит все библиотеки с открытым исходным кодом, необходимые для разработки на C++. Эти библиотеки поставляются в комплекте с Boost C++. После его установки вы можете начать использовать библиотеки в своем коде во время разработки.
Мы рассмотрим полную установку Boost C++ на Ubuntu 22.04.
Два способа установки Boost C++ в Ubuntu 22.04
У вас есть два варианта установки библиотеки Boost C++ в Ubuntu 22.04. Во-первых, вы можете установить его через репозиторий Ubuntu apt, но это не даст вам последнюю версию. Кроме того, вы можете установить его из исходного кода, что дает вам доступ к последней версии.
1. Установите Boost C++ через APT
Установка его через репозиторий apt — наиболее удобный способ быстрой установки Boost C++ на Ubuntu 22.04. Начните с обновления репозитория.
$ sudo apt update

Следующим шагом будет установка пакета libboost-all-dev, который содержит библиотеки разработки Boost C++.
$ sudo apt install libboost-all-dev

Пакеты Boost C++ имеют большой размер. Нажмите y, чтобы подтвердить установку. Убедитесь, что в вашей системе достаточно места для установки.

После завершения установки пакета убедитесь, что установка прошла успешно, проверив версию установки Boost C++.
$ dpkg -s libboost-dev | grep version

Установленная версия 1.74, но это не последняя версия. Чтобы получить последнюю версию, используйте второй метод установки, который мы обсудим позже в этой статье.
Когда вы устанавливаете Boost C++ через APT, вы можете удалить установленный пакет и зависимости с помощью следующей команды:
$ sudo apt autoremove libboost-all-dev

2. Установите Boost C++ через исходный код
Для тех, кто хочет испачкать руки, установив последние библиотеки Boost C++, вы должны установить их через исходный код.
Начните с посещения веб-сайта Boost C++ и откройте раздел «Загрузки». Найдите параметр «Ускорить загрузку» и нажмите «Текущий выпуск».

Появится список доступных текущих выпусков, которые вы можете загрузить. Щелкните правой кнопкой мыши параметр «tar.gz» и скопируйте его ссылку. Вы также можете нажать на нее, чтобы начать загрузку.

На вашем терминале используйте wget для загрузки файла через терминал. Используйте ссылку, которую вы скопировали с помощью команды wget, чтобы начать загрузку.

После завершения загрузки перейдите в каталог загрузки. Здесь мы перемещаем файл в наши «Загрузки», чтобы убедиться, что мы загрузили файл tar, содержащий исходный код.

Извлеките архивный файл с помощью следующей команды:
$ tar xvf boost_1_81_0_tar.gz

Перейдите в извлеченный каталог «Boots».
$ cd boost_1_81_0 /

Мы должны установить необходимые зависимости для поддержки установки Boost C++. Выполните следующую команду, и все зависимости будут установлены:
$ sudo apt install build-essential python3-dev g++ autotools-dev libicu-dev libbz2-dev -y

Затем нам нужно настроить начальную загрузку Boost. Следующая команда запускает сценарий Bootstrap и создает механизм B2:
$ sudo . / bootstrap.sh —prefix = / usr /

Теперь вы можете запустить сгенерированный движок B2.

Наконец, установите Boost C++ с помощью пакета B2.
$ sudo . / b2 install

После запуска программы установка завершится, и в вашей системе будут доступны библиотеки Boost C++. Затем вы можете вызывать их при написании проектов на C++.
Заключение
Boost C++ — удобная библиотека для работы с проектами C++. Он предлагает различные библиотеки, которые вы можете использовать. Мы рассмотрели два способа установки на Ubuntu 22.04. Вы можете установить его напрямую через APT или используя его исходный код. Используйте тот способ, который удобен для вашего случая.
Все права защищены. © Linux-Console.net • 2019-2024
Boost.Asio C++ Tutorial
Тем, кто не знает, что такое Boost.Asio, посвящается. Boost.Asio — это кросс-платформенная библиотека С++ для сетевого и низкоуровневого ввода-вывода программирования, которая предоставляет разработчикам, использующим асинхронную модель, современный подход программирования на С++. В нашем случае это будет С++11.
Версия Boost, которую я использую — Boost Version 1.60.0. Скачать можно тут.
Опираясь на свой опыт, хотелось бы сразу решить вопрос с установкой библиотеки. Я использую MVS 15, следовательно ставить Boost мы будем туда.
Установка библиотеки
- После скачивания архива с библиотекой, распаковываем его на Локальный диск (лучше) С.
- Открываем папку boost_1_60_0 и запускаем файл bootstrap.bat
- После того как bootstrap.bat отработает, в папке появится файл b2.exe
- Запускаем b2.exe и ждем от 5 минут до 1,5 часа (зависит от «машины»)
- Когда b2.exe отработает, ваша библиотека будет в собранном состоянии, осталось только её подключить в нашу IDE.
- Запускаем MVS, в вкладке «Вид» находим Property Manager
- Двойным кликом открываем страницу свойств папки Debug | Win32 и кликаем на VC++ Directories
- В колонке Include Directories выбираем изменить, далее нажимаем на «папку со *» New Line и указываем ей путь к папке boost_1_60_0, жмём ОК.
- Проводим аналогию с некоторыми изменениями для колонки Library Directoties, но для неё указываем путь C:\boost_1_60_0\stage\lib, жмём ОК.
- Библиотека подключена!
Basic Skills
Первые пять уроков, или как они называются в учебнике Timer, будут вводными в фундаментальные понятия, необходимые для использования инструмента Asio. Перед тем, как погрузиться в сложный мир сетевого программирования, эти Timers (уроки) иллюстрируют базовые навыки, используя простые асинхронные таймеры.
Урок 1. — Использование синхронного таймера. «Timer.1 — Using a timer synchronously«
Этот урок вводит нас в Asio, показывая, как выполняется ожидание по таймеру. Начнём мы с подключения заголовочных файлов. Все Asio классы представлены в виде файлов с расширением Asio.hpp.
#include #include
Так как в этом примере мы используем таймеры, то мы должны включить соответствующий файл заголовка Boost.Date_Time.
#include
Все программы, которые используют Asio, должны иметь, по крайней мере, один объект io_service. Этот класс обеспечивает доступ к функциям ввода / вывода. Мы объявляем объект этого типа первым делом в главной функции. Но перед этим я хотел бы немного облегчить написание нашего кода, при помощи пространства имени. После всех подключенных ЗФ, пишем:
using namespace std; using namespace boost::asio;
Думаю тут особо вопросов не должно возникнуть.
int main() < io_service io;
Далее мы объявляем объект типа deadline_timer. Основные классы Asio, которые обеспечивают функции ввода/вывода (или как в данном случае функциональность нашего Таймера) всегда берут ссылку на io_service в качестве первого аргумента конструктора. Второй аргумент конструктора установка таймера 5 секунд.
deadline_timer t(io, boost::posix_time::seconds(5));
В этом простом примере мы выполняем блокирующие ожидание по таймеру. То есть, вызов deadline_timer :: wait () не вернется, пока таймер не отсчитает 5 секунд после того, как он был создан. Deadline timer, всегда находится в одном из двух состояний: «истек»(expired)или «не истек»(not expired). Если deadline_timer::wait() функция принимает аргумент expired, то функция сразу же вернёт значение.
t.wait();
Наконец мы выводим всеми любимый и знакомый «Hello, World!» сообщение, чтобы показать, когда таймер истек «expired».
cout
Полный код программы в оригинале:
#include #include #include int main()
Полный код программы в личном варианте:
#include #include #include using namespace std; using namespace boost::asio; int main()
kaktusenok
Опишем, как установить библиотеку Boost для среды Visual Studio.
Шаг 1. Скачиваем исходные коды
Как правило, используется последняя версия библиотеки Boost. Если вам нужна более ранняя версия, то следует учитывать, что компилятор VS 2012 поддерживается с версии 1.52. Другими словами, вы не сможете использовать версию более раннюю чем 1.52 на VS 2012. Придётся установить более раннюю версию VS.
Ссылку на последнюю версию можно найти на странице http://www.boost.org/users/download. Обычно это ссылка ведёт на репозиторий вида http://sourceforge.net/projects/boost/files/boost/1.54.0/, откуда скачивается файл с именем boost_1_54_0.zip или другим в зависимости от версии.
Шаг 2. Компиляция
Я буду выполнять установку библиотеки в папку d:\Projects\Libs\boost_1_54_0\. Если у вас другая папка, то все команды изменяются соответствующим образом.
Распаковываем архив boost_1_54_0.zip в папку d:\Projects\Libs\boost_1_54_0\. Из командного интерпретатора выполним следующие команды:
cd /d d:\Projects\Libs\boost_1_54_0\ bootstrap.bat
Если требуется изменить конфигурацию библиотеки, то именно сейчас нужно изменить файл 'project-config.jam'. Если вы не знаете об этом, то оставляйте файл конфигурации как есть.
Далее запускаем процесс компиляции, введя команду b2.
Процесс компиляции длится около 20 минут. В конце отобразится информации о путях подключения библиотеки:
The Boost C++ Libraries were successfully built! The following directory should be added to compiler include paths: D:/Projects/Libs/boost_1_54_0 The following directory should be added to linker library paths: D:\Projects\Libs\boost_1_54_0\stage\lib
Можно использовать утилиту BlueGo, которая позволяет упростить процесс компиляции.
Шаг 3. Создание символьной ссылки
Поскольку будут выходить новые версии библиотеки, то каждый раз изменять пути с D:\Projects\Libs\boost_1_54_0\stage\lib на D:\Projects\Libs\boost_1_55_0\stage\lib и т.д. будет несколько утомительно.
Я предлагаю использовать символьные ссылки, а точнее точки соединения для папок:
cd /d d:\Projects\Libs\ mklink /j boost boost_1_54_0
Далее я буду использовать D:\Projects\Libs\boost вместо D:\Projects\Libs\boost_1_54_0.
Шаг 4. Создание проекта в Visual Studio
Заходим в свойства проекта и изменяем:
- в элемент "Каталоги включения" добавляем "d:\Projects\Libs\boost";
- в элемент "Каталоги библиотек" добавляем "d:\Projects\Libs\boost\libs";

- в элемент "Дополнительные каталоги библиотек" добавляем "d:\Projects\Libs\boost_1_54_0\stage\lib";
- в элемент "Дополнительные зависимости" добавляем
libboost_atomic-vc110-mt-gd-1_54.lib
libboost_chrono-vc110-mt-gd-1_54.lib
libboost_context-vc110-mt-gd-1_54.lib
libboost_coroutine-vc110-mt-gd-1_54.lib
libboost_date_time-vc110-mt-gd-1_54.lib
libboost_exception-vc110-mt-gd-1_54.lib
libboost_filesystem-vc110-mt-gd-1_54.lib
libboost_graph-vc110-mt-gd-1_54.lib
libboost_iostreams-vc110-mt-gd-1_54.lib
libboost_locale-vc110-mt-gd-1_54.lib
libboost_log-vc110-mt-gd-1_54.lib
libboost_log_setup-vc110-mt-gd-1_54.lib
libboost_math_c99-vc110-mt-gd-1_54.lib
libboost_math_c99f-vc110-mt-gd-1_54.lib
libboost_math_c99l-vc110-mt-gd-1_54.lib
libboost_math_tr1-vc110-mt-gd-1_54.lib
libboost_math_tr1f-vc110-mt-gd-1_54.lib
libboost_math_tr1l-vc110-mt-gd-1_54.lib
libboost_prg_exec_monitor-vc110-mt-gd-1_54.lib
libboost_program_options-vc110-mt-gd-1_54.lib
libboost_random-vc110-mt-gd-1_54.lib
libboost_regex-vc110-mt-gd-1_54.lib
libboost_serialization-vc110-mt-gd-1_54.lib
libboost_signals-vc110-mt-gd-1_54.lib
libboost_system-vc110-mt-gd-1_54.lib
libboost_test_exec_monitor-vc110-mt-gd-1_54.lib
libboost_thread-vc110-mt-gd-1_54.lib
libboost_timer-vc110-mt-gd-1_54.lib
libboost_unit_test_framework-vc110-mt-gd-1_54.lib
libboost_wave-vc110-mt-gd-1_54.lib
libboost_wserialization-vc110-mt-gd-1_54.lib
- в элемент "Дополнительные зависимости" добавляем
libboost_atomic-vc110-mt-1_54.lib
libboost_chrono-vc110-mt-1_54.lib
libboost_context-vc110-mt-1_54.lib
libboost_coroutine-vc110-mt-1_54.lib
libboost_date_time-vc110-mt-1_54.lib
libboost_exception-vc110-mt-1_54.lib
libboost_filesystem-vc110-mt-1_54.lib
libboost_graph-vc110-mt-1_54.lib
libboost_iostreams-vc110-mt-1_54.lib
libboost_locale-vc110-mt-1_54.lib
libboost_log_setup-vc110-mt-1_54.lib
libboost_log-vc110-mt-1_54.lib
libboost_math_c99f-vc110-mt-1_54.lib
libboost_math_c99l-vc110-mt-1_54.lib
libboost_math_c99-vc110-mt-1_54.lib
libboost_math_tr1f-vc110-mt-1_54.lib
libboost_math_tr1l-vc110-mt-1_54.lib
libboost_math_tr1-vc110-mt-1_54.lib
libboost_prg_exec_monitor-vc110-mt-1_54.lib
libboost_program_options-vc110-mt-1_54.lib
libboost_random-vc110-mt-1_54.lib
libboost_regex-vc110-mt-1_54.lib
libboost_serialization-vc110-mt-1_54.lib
libboost_signals-vc110-mt-1_54.lib
libboost_system-vc110-mt-1_54.lib
libboost_test_exec_monitor-vc110-mt-1_54.lib
libboost_thread-vc110-mt-1_54.lib
libboost_timer-vc110-mt-1_54.lib
libboost_unit_test_framework-vc110-mt-1_54.lib
libboost_wave-vc110-mt-1_54.lib
libboost_wserialization-vc110-mt-1_54.lib
Теперь проект успешно компилируется:

7 комментариев:
Серьезность Код Описание Проект Файл Строка
Ошибка LNK1181 не удается открыть входной файл "libboost_atomic-vc110-mt-1_54.lib" VStilsofteServer E:\Progect VisualStudio 2015\VStilsofteServer\VStilsofteServer\LINK
Почему у меня выдает такую ошибку Ответить Удалить
Необходимо добавить в Linker->Additional library directories
путь к boost_x_xx\stage\lib, где x - версия буста Удалить
Чтобы не набирать библиотеки из папки вручную или через cmd, кому нужен список библиотек версии 1_68 для вставки во вкладку "Дополнительные библиотеки" новой версии - вот он:
Debug (Активный):
libboost_atomic-vc140-mt-gd-x32-1_68.lib
libboost_atomic-vc140-mt-gd-x64-1_68.lib
libboost_chrono-vc140-mt-gd-x32-1_68.lib
libboost_chrono-vc140-mt-gd-x64-1_68.lib
libboost_container-vc140-mt-gd-x32-1_68.lib
libboost_container-vc140-mt-gd-x64-1_68.lib
libboost_context-vc140-mt-gd-x32-1_68.lib
libboost_context-vc140-mt-gd-x64-1_68.lib
libboost_contract-vc140-mt-gd-x32-1_68.lib
libboost_contract-vc140-mt-gd-x64-1_68.lib
libboost_coroutine-vc140-mt-gd-x32-1_68.lib
libboost_coroutine-vc140-mt-gd-x64-1_68.lib
libboost_date_time-vc140-mt-gd-x32-1_68.lib
libboost_date_time-vc140-mt-gd-x64-1_68.lib
libboost_exception-vc140-mt-gd-x32-1_68.lib
libboost_exception-vc140-mt-gd-x64-1_68.lib
libboost_fiber-vc140-mt-gd-x32-1_68.lib
libboost_fiber-vc140-mt-gd-x64-1_68.lib
libboost_filesystem-vc140-mt-gd-x32-1_68.lib
libboost_filesystem-vc140-mt-gd-x64-1_68.lib
libboost_graph-vc140-mt-gd-x32-1_68.lib
libboost_graph-vc140-mt-gd-x64-1_68.lib
libboost_iostreams-vc140-mt-gd-x32-1_68.lib
libboost_iostreams-vc140-mt-gd-x64-1_68.lib
libboost_locale-vc140-mt-gd-x32-1_68.lib
libboost_locale-vc140-mt-gd-x64-1_68.lib
libboost_log_setup-vc140-mt-gd-x32-1_68.lib
libboost_log_setup-vc140-mt-gd-x64-1_68.lib
libboost_log-vc140-mt-gd-x32-1_68.lib
libboost_log-vc140-mt-gd-x64-1_68.lib
libboost_math_c99f-vc140-mt-gd-x32-1_68.lib
libboost_math_c99f-vc140-mt-gd-x64-1_68.lib
libboost_math_c99l-vc140-mt-gd-x32-1_68.lib
libboost_math_c99l-vc140-mt-gd-x64-1_68.lib
libboost_math_c99-vc140-mt-gd-x32-1_68.lib
libboost_math_c99-vc140-mt-gd-x64-1_68.lib
libboost_math_tr1f-vc140-mt-gd-x32-1_68.lib
libboost_math_tr1f-vc140-mt-gd-x64-1_68.lib
libboost_math_tr1l-vc140-mt-gd-x32-1_68.lib
libboost_math_tr1l-vc140-mt-gd-x64-1_68.lib
libboost_math_tr1-vc140-mt-gd-x32-1_68.lib
libboost_math_tr1-vc140-mt-gd-x64-1_68.lib
libboost_prg_exec_monitor-vc140-mt-gd-x32-1_68.lib
libboost_prg_exec_monitor-vc140-mt-gd-x64-1_68.lib
libboost_program_options-vc140-mt-gd-x32-1_68.lib
libboost_program_options-vc140-mt-gd-x64-1_68.lib
libboost_random-vc140-mt-gd-x32-1_68.lib
libboost_random-vc140-mt-gd-x64-1_68.lib
libboost_regex-vc140-mt-gd-x32-1_68.lib
libboost_regex-vc140-mt-gd-x64-1_68.lib
libboost_serialization-vc140-mt-gd-x32-1_68.lib
libboost_serialization-vc140-mt-gd-x64-1_68.lib
libboost_signals-vc140-mt-gd-x32-1_68.lib
libboost_signals-vc140-mt-gd-x64-1_68.lib
libboost_stacktrace_noop-vc140-mt-gd-x32-1_68.lib
libboost_stacktrace_noop-vc140-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg_cached-vc140-mt-gd-x32-1_68.lib
libboost_stacktrace_windbg_cached-vc140-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg-vc140-mt-gd-x32-1_68.lib
libboost_stacktrace_windbg-vc140-mt-gd-x64-1_68.lib
libboost_system-vc140-mt-gd-x32-1_68.lib
libboost_system-vc140-mt-gd-x64-1_68.lib
libboost_test_exec_monitor-vc140-mt-gd-x32-1_68.lib
libboost_test_exec_monitor-vc140-mt-gd-x64-1_68.lib
libboost_thread-vc140-mt-gd-x32-1_68.lib
libboost_thread-vc140-mt-gd-x64-1_68.lib
libboost_timer-vc140-mt-gd-x32-1_68.lib
libboost_timer-vc140-mt-gd-x64-1_68.lib
libboost_type_erasure-vc140-mt-gd-x32-1_68.lib
libboost_type_erasure-vc140-mt-gd-x64-1_68.lib
libboost_unit_test_framework-vc140-mt-gd-x32-1_68.lib
libboost_unit_test_framework-vc140-mt-gd-x64-1_68.lib
libboost_wave-vc140-mt-gd-x32-1_68.lib
libboost_wave-vc140-mt-gd-x64-1_68.lib
libboost_wserialization-vc140-mt-gd-x32-1_68.lib
libboost_wserialization-vc140-mt-gd-x64-1_68.lib
Это для версии 1_68. Список, как видите очень расширился! Ответить Удалить
Этот комментарий был удален автором. Ответить Удалить
Так как предоставленные автором имена библиотек тяжело модифицировать под имена библиотек новых версий libboost (так как в имена добавлена приставка x32 или x64, в именах библиотек автора их нет, следовательно в блокноте уже тяжело как-то изменять. ), я выложил список новых библиотек. Я не хочу тут спамить, чтобы получить список для Release, зайдите в блокнот, скопируйте все библиотеки для Debug (Активный), я выкладывал в предыдущем комментарии ,перейдите в меню -> "Правка" -> "Заменить". В поле "Что" пишите "-gd" (без кавычек), поле "Чем" оставьте пустым. Потом нажимаете "Заменить всё". Получившийся список имён библиотек копируете в "Дополнительные библиотеки" в режиме Release. Ответить Удалить
Использование Boost.Test для C++ в Visual Studio
В Visual Studio 2017 и более поздних версиях адаптер теста Boost.Test интегрирован в среду IDE Visual Studio. Это компонент рабочей нагрузки Разработка классических приложений на C++.

Если у вас не установлена рабочая нагрузка Разработка классических приложений на C++, откройте Установщик Visual Studio. Выберите рабочую нагрузку Разработка классических приложений на C++, а затем нажмите кнопку Изменить.
Установка Boost
Для Boost.Test требуется Boost. Если у вас не установлен Boost, рекомендуем воспользоваться диспетчером пакетов Vcpkg.
- Следуйте инструкциям в статье vcpkg: диспетчер пакетов C++ для Windows, чтобы установить диспетчер vcpkg (если у вас его еще нет).
- Установка динамической или статической библиотеки Boost.Test:
- Запустите vcpkg install boost-test , чтобы установить динамическую библиотеку Boost.Test. -ИЛИ-
- Запустите vcpkg install boost-test:x86-windows-static , чтобы установить статическую библиотеку Boost.Test.
- Выполните vcpkg integrate install , чтобы настроить в Visual Studio библиотеку и пути включения для заголовков и двоичных файлов Boost.
Вы можете выбрать способ настройки тестов в своем решении в Visual Studio: вы можете включить тестовый код в тестируемый проект или создать отдельный тестовый проект для проведения тестов. Оба варианта имеют свои преимущества и недостатки.
Добавление тестов в проект
В Visual Studio 2017 версии 15.6 и более поздних можно добавить шаблон элемента для тестов в проект. Тесты и код находятся в одном проекте. Для создания тестовой сборки потребуется создать отдельную конфигурацию сборки. И вам нужно будет следить за тем, чтобы в сборках отладки и выпуска тестов не было.
В Visual Studio 2017 версии 15.5 для Boost.Test нет предварительно настроенного тестового проекта или шаблонов элементов. Используйте инструкции для создания и настройки отдельного тестового проекта.
Создание элемента Boost.Test

- Чтобы создать CPP-файл для тестов, щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите пункт Добавить>Новый элемент.
- В диалоговом окне Добавление нового элемента последовательно разверните узлы Установлено>Visual C++>Тест. Выберите Boost.Test и затем Добавить, чтобы добавить Test.cpp в проект.
Новый файл Test.cpp содержит пример метода теста. В этот файл можно включить собственные файлы заголовков и записать тесты для приложения.
Этот тестовый файл также использует макросы для определения новой подпрограммы main для конфигураций тестов. Если выполнить сборку проекта сейчас, выводится ошибка LNK2005, например "_main уже определен в main.obj".
Создание и изменение конфигураций сборки
- Чтобы создать конфигурацию теста, в строке меню выберите Сборка>Диспетчер конфигураций. В диалоговом окне Диспетчер конфигураций выберите в раскрывающемся списке Активная конфигурация решения пункт Создать. В диалоговом окне Создание конфигурации решения введите имя, например "Debug UnitTests". В поле Копировать параметры из выберите Отладка, а затем нажмите кнопку ОК.
- Исключите тестовый код из конфигураций отладки и выпуска: в обозревателе решений щелкните правой кнопкой мыши файл Test.cpp и выберите пункт Свойства. В диалоговом окне Страницы свойств откройте раскрывающийся список Конфигурация и выберите Все конфигурации. Выберите Свойства конфигурации>Общие и откройте раскрывающийся список для свойства Исключено из сборки. Выберите Да, а затем нажмите кнопку Применить, чтобы сохранить изменения.
- Чтобы включить код теста в конфигурацию "Debug UnitTests", в диалоговом окне Страницы свойств выберите Debug UnitTests в раскрывающемся списке Конфигурация. Выберите Нет в свойстве Исключено из сборки и нажмите кнопку ОК для сохранения изменений.
- Исключите основной код из конфигурации "Debug UnitTests". В обозревателе решений щелкните правой кнопкой мыши файл, содержащий функцию main , и выберите пункт Свойства. В диалоговом окне Страницы свойств откройте раскрывающийся список Конфигурация и выберите Debug UnitTests. Выберите Свойства конфигурации>Общие и откройте раскрывающийся список для свойства Исключено из сборки. Выберите Да, а затем нажмите кнопку ОК, чтобы сохранить изменения.
- Выберите конфигурацию решения Debug UnitTests, а затем создайте проект, чтобы обозреватель тестов смог обнаружить этот метод.
При условии, что создаваемое имя конфигурации начинается со слова "Debug" или "Release", соответствующие библиотеки Boost.Test подбираются автоматически.
Шаблон элемента использует вариант Boost.Test с одним заголовком, но вы можете изменить путь в #include, чтобы указать автономный вариант библиотеки. Дополнительные сведения см. в разделе Добавление директив include.
Создание отдельного тестового проекта
Во многих случаях для тестов проще использовать отдельный проект. Вам не нужно будет создавать специальную конфигурацию теста для своего проекта. Или исключите тестовые файлы из сборок отладки и выпуска.
Создание отдельного тестового проекта
- В обозревателе решений щелкните узел решения правой кнопкой мыши и выберите пункты Добавить>Новый проект.
- В диалоговом окне Добавить новый проект выберите C++, Windows и Консоль в раскрывающихся списках фильтров. Выберите шаблон Консольное приложение и нажмите кнопку Далее.
- Присвойте проекту имя и нажмите кнопку Создать.
- Удалите функцию main из CPP-файла.
- Если вы используете версию Boost.Test с одним заголовком или динамическую версию библиотеки, перейдите к разделу Добавление директив #include. Если вы используете статическую версию библиотеки, вам нужно выполнить некоторые дополнительные настройки: a. Чтобы изменить файл проекта, сначала выгрузите его. В обозревателе решений щелкните узел проекта правой кнопкой мыши и выберите пункт Выгрузить проект. Затем щелкните правой кнопкой мыши узел проекта и выберите Изменить .vcxproj. b. Добавьте две строки в группу свойств Глобальные, как показано ниже:
. x86-windows-static true
Добавление директив include

- В CPP-файле теста добавьте необходимые директивы #include , чтобы типы и функции программы были доступны коду теста. Если вы используете отдельный тестовый проект, как правило, программа находится в иерархии папок на том же уровне. При вводе #include "../" открывается окно IntelliSense, в котором можно выбрать полный путь к файлу заголовка. Можно использовать автономную библиотеку с:
#include
Или использовать версию с одним заголовком с:
#include
Приведенного ниже примера достаточно для обнаружения теста в обозревателе тестов.
#define BOOST_TEST_MODULE MyTest #include //single-header #include "../MyProgram/MyClass.h" // project being tested #include BOOST_AUTO_TEST_CASE(my_boost_test) < std::string expected_value = "Bill"; // assume MyClass is defined in MyClass.h // and get_value() has public accessibility MyClass mc; BOOST_CHECK(expected_value == mc.get_value()); >
Написание и запуск тестов
Все готово к написанию и выполнению тестов Boost. Сведения о макросах тестов см. в документации по библиотеке Boost Test. Сведения об обнаружении, выполнении и группировании тестов с помощью обозревателя тестов см. в статье Выполнение модульных тестов с помощью обозревателя тестов.