Я хочу связать мой c ++ проект на CLion с Boost.Чтобы упростить портирование, я бы предпочел, чтобы все библиотеки были непосредственно в файлах проекта, поэтому я поместил папку boost непосредственно в файлы своего проекта, а затем приступил к редактированию CMakeList.txt, чтобы связать библиотеку.Я хочу связать мой c ++ проект на CLion с Boost.Чтобы упростить портирование, я бы предпочел, чтобы все библиотеки были непосредственно в файлах проекта, поэтому я поместил папку boost непосредственно в файлы своего проекта, а затем приступил к редактированию CMakeList.txt, чтобы связать библиотеку.
set(BOOST_NO_SYSTEM_PATHS ON)
set(BOOST_ROOT ${PROJECT_SOURCE_DIR}/boost_1_71_0/)
set(BOOST_INCLUDEDIR ${PROJECT_SOURCE_DIR}/boost_1_71_0/boost)
find_package(Boost COMPONENTS system filesystem)
/.../
target_link_libraries(untitled ${Boost_LIBRARIES})
Но CMake постоянно говорит мне, что "" Не удалось найти Boost (отсутствует: файловая система системы) (найдена версия "1.71.0") ".Я попытался добавить 1.71.0 в find_package, но это не изменит того факта, что CMake сообщает мне, что не может найти Boost.Дело в том, что если моя строка find_package становится такой:
find_package(Boost COMPONENTS)
CMake говорит "Found Boost: C: / Users / kimer / CLionProjects / без названия / boost_1_71_0 (найдена подходящая версия" 1.71.0 ", требуется минимум"1.71.0") ".Я не уверен, что об этом думать.
Я не обязательно хочу скомпилировать библиотеку, поскольку большинство компонентов являются только заголовками и не требуют компиляции.Кроме того, я попытался скомпилировать Boost, но он требует msvc, но я использую компилятор mingw w64 g ++ и также не нашел каких-либо решений по этому поводу (я попытался запустить boost.build bootstrap.bat с параметром mingw, но он возвращаетошибка cpp и не компилируется).
Что я делаю не так, чтобы связать библиотеку?
Редактировать: У меня точно такая же проблема с библиотеками только заголовков, как chrono
Редактировать 2: Хорошо, мне кажется, что мне нужно скомпилировать Boost с моим компилятором Mingw x86_64-win32, но всякий раз, когда я пытаюсь его скомпилировать, я получаю эту ошибку:
.\bootstrap.bat gcc
Bootstrapping the build engine
sysinfo.cpp: In function 'unsigned int {anonymous}::std_thread_hardware_concurrency()':
sysinfo.cpp:93:21: error: 'std::thread' has not been declared
return std::thread::hardware_concurrency();
^~~~~~
Fichier introuvable
Failed to bootstrap the build engine
Please consult bootstrap.log for further diagnostics.
Редактировать 3: Я нашелпочему он не скомпилировался: я использовал версию Mingw для w32, а не POSIX.Все это прекрасно скомпилировано с версией POSIX;Теперь у меня есть скомпилированная библиотека Boost в папке «Boost».Я изменил свой файл CMakeLists.txt:
set(Boost_DEBUG ON)
set(BOOST_INCLUDEDIR ${PROJECT_SOURCE_DIR}/boost/include/boost-1_71/)
set(BOOST_LIBRARYDIR ${PROJECT_SOURCE_DIR}/boost/lib)
set(BOOST_NO_SYSTEM_PATHS ON)
find_package(Boost COMPONENTS system)
. Библиотека Boost выполняет поиск в нужных каталогах, как сообщает мне отладчик.Он также ищет файлы с такими именами:
-- [ D:/Dev/CMake/share/cmake-3.15/Modules/FindBoost.cmake:2040 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-mgw81-mt-1_71;boost_system-mgw81-mt;boost_system-mgw81-mt;boost_system-mt-1_71;boost_system-mt;boost_system-mt;boost_system-mt;boost_system
-- [ D:/Dev/CMake/share/cmake-3.15/Modules/FindBoost.cmake:2095 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-mgw81-mt-d-1_71;boost_system-mgw81-mt-d;boost_system-mgw81-mt-d;boost_system-mt-d-1_71;boost_system-mt-d;boost_system-mt-d;boost_system-mt;boost_system
, в то время как моя скомпилированная библиотека Boost создала следующие файлы A:
libboost_system-mgw81-mt-d-x64-1_71.a
libboost_system-mgw81-mt-x64-1_71.a
Возможно, это проблема, но как я могу ее решить?