Превращаю мои комментарии в ответ:
Вам не хватает, чтобы связать свой исполняемый файл с библиотекой Boost date_time
.Включение другого заголовка может удалить эту зависимость ссылки, как вы заметили.
Большинство библиотек Boost являются только заголовками.Но некоторые этого не делают и требуют добавления библиотеки в команду target_link_libraries
.Это можно сделать один раз для всех библиотек, найденных по команде find_package(Boost "1.67.0" COMPONENTS system date_time REQUIRED)
, добавив
target_link_libraries(${EXEC_NAME} ${Boost_LIBRARIES})
или добавив отдельные библиотеки следующим образом
target_link_libraries(${EXEC_NAME} ${Boost_SYSTEM_LIBRARY} ${Boost_DATE_TIME_LIBRARY})
И пока вы находитесь у него, включите команду include_directories(${Boost_INCLUDE_DIRS})
, который добавляет каталоги Boost для всех целей в CMakeLists.txt
в конкретную цель target_include_directories(${EXEC_NAME} PUBLIC ${Boost_INCLUDE_DIRS})
.Если вам нужно связать PUBLIC/PRIVATE/INTERFACE
, зависит от того, предоставляет ли ваша библиотека / DLL / разделяемый объект типы из библиотек Boost.