已安装Boost但CMake报错找不到boost_filesystemConfig.cmake如何解决
问题原因
报错是因为手动安装的Boost 1.77版本和Ubuntu 18.04默认apt源安装的1.65版本Boost产生了路径冲突,且你手动编译安装Boost 1.77时没有生成各组件对应的CMake配置文件,导致Boost的顶层配置文件无法找到boost_filesystem组件的配置。
可行解决方案
方案1:强制CMake使用MODULE模式查找Boost
在CMakeLists.txt中find_package(Boost ...)行之前添加以下配置,禁用Boost自带的Config查找模式,用CMake内置的FindBoost模块查找:set(Boost_NO_BOOST_CMAKE ON) # 可选:如果你的Boost安装在非默认路径,取消注释下一行并替换为实际安装路径 # set(Boost_ROOT "/path/to/your/boost1.77/install/path") find_package(Boost 1.77 REQUIRED COMPONENTS filesystem 其他你需要的组件名)方案2:清理版本冲突后重新编译安装Boost
先卸载apt安装的默认版本Boost,避免路径冲突:sudo apt purge libboost-all-dev libboost*-dev sudo apt autoremove回到你之前编译Boost 1.77的源码目录,重新编译安装,编译时明确开启需要的组件,生成CMake配置:
./bootstrap.sh --with-libraries=filesystem,其他你需要的组件名(比如system、thread等) ./b2 cxxflags=-fPIC install默认会安装到
/usr/local路径下,安装完成后再执行CMake配置即可。方案3:绕过find_package直接指定路径(临时快速解决)
如果你不想修改Boost安装,可直接在CMakeLists.txt中硬编码Boost的头文件和库路径,跳过查找逻辑:include_directories(/usr/local/include) # 替换为你实际的Boost头文件路径 link_directories(/usr/local/lib) # 替换为你实际的Boost库文件路径 # 后面编译目标时直接链接对应的库即可 target_link_libraries(你的程序目标名 boost_filesystem 其他需要的Boost库名)
内容的提问来源于stack exchange,提问作者S.H
相关产品推荐
相关产品推荐

