В основном есть 3 шага:
- ускорение сборки и соответствующие библиотеки и их варианты (см. здесь для Boost.Test)
- настройка проекта с CMake (пример здесь )
- построить проект
Кажется, у вас есть все шаги, но что усложняет задачу, так это то, что эти 3 шага связаны и должны выполняться согласованно:
- Шаг 1 + 2: если вы создаете конкретные c варианты Boost (или Boost.Test) на шаге 1, вы должны проинструктировать CMake с этим вариантом
- Шаг 3: при сборке проекта ваша программа кода в некоторых случаях должна быть построена с определениями, указывающими, какой вариант создается. Например, если вы хотите связать с версией общей библиотеки Boost.Test, вы должны определить
BOOST_TEST_DYN_LINK
(в коде перед любым включением Boost.Test или с target_compile_definitions(test_executable PRIVATE "BOOST_TEST_DYN_LINK=1")
)
В случае Boost.Test есть еще одна проблема: на Windows есть функция автосвязки, которая проинструктирует компоновщик автоматически связать с одной версией .lib
: это то, что я обычно отключаю, передавая определение BOOST_ALL_NO_LIB
.
Если вы можете сделать обнаружение CMake для Boost.Test, я бы не стал беспокоиться вначале обо всех этих проблемах со связью и использовал вариант заголовка , для которого нет проблем с привязкой
Возвращаясь к тому, что у вас есть в настоящее время:
- ошибка
Could NOT find Boost (missing: unit_test_framework) (found version 1.60.0")
связана с шагом 1 + 2: CMake не может найти библиотеки с конфигурацией, которую вы указывают. Иногда вам нужно предоставить CMake больше переменных, чтобы он нашел нужные библиотеки, но я предполагаю, что вы просто не создали общий вариант (см. здесь ). Например, иногда я использую Boost_COMPILER
и Boost_ARCHITECTURE
. Boost_USE_STATIC_LIBS
- это инструкция только для CMake: она не требует компиляции вашего файла с правильными определениями.
Если вы опубликуете сообщение об ошибке, которое вы получаете с CMake, передавая -DBoost_DEBUG=ON
, мы сможем оказать вам более точную поддержку.