如何让cmake找到boost库
在此之前,我们已经 [[使用mingw-w64编译Boost]]。
然后,我们来编写项目的 CMakeList
文件。
定义好关键的变量:
set(BOOST_ROOT "C:/Program Files/boost_1_83_0")
set(Boost_DIR "${BOOST_ROOT}/tools/cmake/config")
set(BOOST_LIBRARYDIR "${BOOST_ROOT}/stage/lib")
set(BOOST_INCLUDEDIR "${BOOST_ROOT}/boost")
set(boost_headers_DIR "${BOOST_LIBRARYDIR}/cmake/boost_headers-1.83.0")
这里面包括了可能用到的 .cmake
文件、头文件以及库文件的根目录。
然后,我们开始配置要调用的库中模块,这里通过了循环添加模块的路径来简化配置。
list(APPEND boost_libs "filesystem" "locale")
如上所示,假如我们想添加 filesystem
和 locale
两个模块。当然我们可以加很多个,直接配置在 boost_libs
这个列表中。
FOREACH(lib ${boost_libs})
message(${lib})
set(boost_${lib}_DIR "${BOOST_LIBRARYDIR}/cmake/boost_${lib}-1.83.0")
ENDFOREACH(lib)
然后,我们循环遍历 boost_libs
中的模块名,并将对应的路径设置成对应的变量中。
find_package(
Boost
COMPONENTS ${boost_libs}
REQUIRED NO_MODULE)
message(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}")
message(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}")
将路径都定义完成后,我们使用 find_package
命令自动将 boost_libs
列表中所有的库都加入到编译配置中。
最后,加入头文件的目录以及将执行文件链接到库。
include_directories(${BOOST_INCLUDEDIR})
set(SOURCES main.cc xxx.cc xxx.cc)
add_executable(exe ${SOURCES})
target_link_libraries(exe ${Boost_LIBRARIES})
Reference
VsCode + mingw编译器下boost库的安装 - Fight!GO - 博客园 (cnblogs.com)
C++ Boost 库 Windows 环境 GCC 编译安装及 CMake 相关配置_boost cmake_PeakCrosser的博客-CSDN博客
时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下
作者: pomolnc
出处: https://www.cnblogs.com/pomolnc/p/17763825.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
若内容有侵犯您权益的地方,请公告栏处联系本人,本人定积极配合处理解决。