Я начинаю с того, что это не проблема с переменными среды.
Когда я использую только библиотеки заголовков, все прекрасно работает с этим:
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(TestCMake Program.cpp)
target_link_libraries(TestCMake ${Boost_LIBRARIES})
endif()
Но когда я пытаюсьзапросить библиотеку, изменив find_package(Boost REQUIRED)
на find_package(Boost REQUIRED COMPONENTS system)
Я получаю ошибку:
Unable to find the requested Boost libraries.
Boost version: 1.67.0
Boost include path: D:/boost/boost_1_67_0
Could not find the following Boost libraries:
boost_system
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Этот ответ на другой вопрос предполагает, что CMake ожидает, что двоичные файлы Boost будут названы в определенномпуть:
boost_thread-vc100-mt-1_51
boost_thread-vc100-mt
boost_thread-mt-1_51
boost_thread-mt
boost_thread
У меня есть предварительно скомпилированный двоичный файл (полученный из здесь ) с именем boost_system-vc141-mt-x32-1_67.lib
. Как я мог заставить CMake распознать соглашение об именах, используемое в моих двоичных файлах?
Комментарии к этому ответу с понижением голосов на этот другой вопрос предлагают не переименовывать файлы.