CMake无法找到已安装的Boost_Graph库问题求助
解决CMake无法找到Boost-Graph静态库的问题
核心问题分析
从错误日志能直接定位原因:
已尝试并被拒绝的变体如下:
- libboost_graph.so.1.74.0(共享库,Boost_USE_STATIC_LIBS=ON)
- libboost_graph.a(共享运行时,Boost_USE_STATIC_RUNTIME=ON)
Ubuntu 22.04默认预装的Boost静态库,是基于共享C++运行时编译的,但你的CMake配置同时要求静态库和静态运行时,两者不匹配导致库被拒绝。
解决方案
方案1:修改CMake配置(最简便)
直接关闭静态运行时的强制要求,适配系统预装的Boost库:
set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) # 注释或删除静态运行时的强制设置 # set(Boost_USE_STATIC_RUNTIME ON) find_package(Boost COMPONENTS graph program_options REQUIRED)
方案2:临时覆盖CMake参数(无需修改代码)
执行cmake命令时直接传递参数覆盖原有配置:
cmake ../project_name/ -DCLAPACK_BASE_DIRECTORY=/home/vitalii/clapack-3.2.1-CMAKE -DCLAPACK_BUILD_DIRECTORY=/home/vitalii/clapack-3.2.1-CMAKE/BUILD -DBoost_USE_STATIC_RUNTIME=OFF
方案3:手动编译Boost(强制要求静态运行时场景)
如果项目必须依赖静态运行时,需要自行编译符合要求的Boost库:
- 下载对应版本的Boost源码(如1.74.0)
- 编译时指定静态运行时参数:
./bootstrap.sh --prefix=/usr/local/boost-static ./b2 install link=static runtime-link=static threading=multi --with-graph --with-program_options
- 编译项目时指定自定义Boost路径:
cmake ../project_name/ -DBoost_ROOT=/usr/local/boost-static -DCLAPACK_BASE_DIRECTORY=/home/vitalii/clapack-3.2.1-CMAKE -DCLAPACK_BUILD_DIRECTORY=/home/vitalii/clapack-3.2.1-CMAKE/BUILD
内容的提问来源于stack exchange,提问作者Vitalii Frolov
相关产品推荐
相关产品推荐

