Windows10 CLion CMake配置报错:无法找到Boost组件问题咨询
CMake配置提示找不到Boost依赖的修复方案
基础环境信息
- 操作系统:Windows 10
- CMake版本:3.24.0
- Boost版本:1.66.0
- CLion版本:2022.1.3
报错现象
项目执行CMake配置时触发报错,已尝试公开渠道检索到的同类问题解决方案均未生效,完整执行日志如下:
C:\Users\33671\AppData\Local\JetBrains\CLion2022.1\cygwin_cmake\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=/cygdrive/c/Program Files/JetBrains/CLion 2022.1.3/bin/ninja/cygwin/ninja.exe" -G Ninja -S /cygdrive/c/Users/33671/Desktop/main_program-master -B /cygdrive/c/Users/33671/Desktop/main_program-master/cmake-build-debug-cygwin -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE CMake Error at /cygdrive/c/Users/33671/AppData/Local/JetBrains/CLion2022.1/cygwin_cmake/share/cmake-3.22.3/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Boost (missing: Boost_INCLUDE_DIR system thread regex iostreams) Call Stack (most recent call first): /cygdrive/c/Users/33671/AppData/Local/JetBrains/CLion2022.1/cygwin_cmake/share/cmake-3.22.3/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /cygdrive/c/Users/33671/AppData/Local/JetBrains/CLion2022.1/cygwin_cmake/share/cmake-3.22.3/Modules/FindBoost.cmake:2375 (find_package_handle_standard_args) CMakeLists.txt:10 (FIND_PACKAGE) -- Configuring incomplete, errors occurred! See also "/cygdrive/c/Users/33671/Desktop/main_program-master/cmake-build-debug-cygwin/CMakeFiles/CMakeOutput.log". [Finished]
当前使用的CMakeLists.txt配置如下:
cmake_minimum_required(VERSION 3.5) project(test) set(CMAKE_CXX_STANDARD 14) SET(Boost_USE_STATIC_LIBS NO) SET(Boost_USE_MULTITHREAD ON) SET(CMAKE_PREFIX_PATH /lib/) FIND_PACKAGE(Boost REQUIRED COMPONENTS system thread regex iostreams)# 1.66.0 IF(Boost_FOUND) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) ENDIF(Boost_FOUND) SET(USED_LIBS ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_IOSTREAMS_LIBRARY})
可行修复步骤
1. 确认Cygwin环境安装了对应Boost组件
当前使用Cygwin编译链,只能识别Cygwin源发布的对应版本Boost,Windows原生安装的MSVC/MinGW版Boost存在二进制兼容问题,无法被识别。
打开Cygwin安装程序,搜索boost,确认安装以下包:
libboost-devel(含头文件,对应报错缺失的Boost_INCLUDE_DIR)libboost-system1.66libboost-thread1.66libboost-regex1.66libboost-iostreams1.66
2. 修正CMakeLists.txt配置错误
原配置中SET(CMAKE_PREFIX_PATH /lib/)路径设置错误,会引导CMake到错误位置搜索依赖,替换为以下配置:
cmake_minimum_required(VERSION 3.5) project(test) set(CMAKE_CXX_STANDARD 14) set(Boost_USE_STATIC_LIBS OFF) set(Boost_USE_MULTITHREADED ON) # 显式指定Cygwin环境下Boost的默认安装根路径 set(BOOST_ROOT /usr) find_package(Boost 1.66.0 REQUIRED COMPONENTS system thread regex iostreams) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) endif() set(USED_LIBS ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_IOSTREAMS_LIBRARY}) # 注意:需要将依赖库链接到你的构建目标,示例如下,替换为你自己的目标名即可 # add_executable(main_program main.cpp) # target_link_libraries(main_program ${USED_LIBS})
3. 清理缓存重新配置
- 直接删除项目目录下的
cmake-build-debug-cygwin文件夹,清除旧的CMake缓存 - 打开CLion的CMake配置页,确认当前选中Cygwin工具链,没有手动配置错误的Boost路径环境变量
- 重新执行CMake配置即可
兜底处理
如果上述操作完成后仍提示找不到Boost,直接在CLion的CMake配置项的「CMake选项」中添加参数-DBOOST_ROOT=/usr,强制指定Boost搜索根路径即可。
注意:不要混用不同编译链的依赖库,Cygwin、MinGW、MSVC编译的二进制文件互不兼容,混用会直接导致搜索失败或链接报错。另外日志中显示CLion调用的是自带的3.22.3版本Cygwin CMake,和系统安装的3.24.0版本不冲突,不需要额外调整。
内容的提问来源于stack exchange,提问作者PZo
相关产品推荐
相关产品推荐

