CMake环境下Qt项目无法找到Boost库boost_lboost_thread求助
解决CMake找不到Boost库的问题
首先,核心问题出在你的libCam/CMakeLists.txt里的Boost组件拼写错误,以及重复调用find_package(Boost)的冗余配置上。
错误根源分析
看你这段配置:
find_package(Boost COMPONENTS filesystem lboost_thread system REQUIRED) find_package(Boost COMPONENTS system thread filesystem REQUIRED)
- 第一行里的
lboost_thread是完全错误的写法,CMake的FindBoost模块会把你指定的组件名拼接成boost_${组件名}去查找对应的库文件,所以它会尝试找boost_lboost_thread——这显然是不存在的,而你的系统里明明已经有thread组件(错误日志里明确显示Found the following Boost libraries: thread)。 - 重复调用
find_package(Boost)会覆盖之前的配置,反而可能导致依赖收集混乱。
具体修复步骤
- 合并并修正Boost的find_package调用
把那两行重复的find_package(Boost)替换成单独一行:
find_package(Boost COMPONENTS system thread filesystem REQUIRED)
这样就明确指定了你需要的三个Boost组件,完全匹配系统里已安装的库。
移除多余的INCLUDE_DIRECTORIES(可选但推荐)
find_package(Boost ... REQUIRED)会自动设置Boost_INCLUDE_DIR和Boost_LIBRARIES变量,你已经在target_link_libraries里用了${Boost_LIBRARIES},其实不需要手动再写INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )——不过这一步不影响编译,只是让配置更简洁。重新运行CMake
删除你的build目录,重新执行CMake命令:
rm -rf /home/labrat/Desktop/cam-proc/build mkdir /home/labrat/Desktop/cam-proc/build cd /home/labrat/Desktop/cam-proc/build /usr/bin/cmake /home/labrat/Desktop/cam-proc -G"CodeBlocks - Unix Makefiles"
为什么之前的尝试没用?
你下载Boost 1.55没用是因为问题根本不是Boost版本的问题——你的系统已经有1.58,而且日志显示它能找到thread等组件,只是你写错了组件名导致CMake去找一个不存在的库。
内容的提问来源于stack exchange,提问作者user9174145




