Windows Cmake工程配置Boost库
背景
Windows环境下使用cmake开发程序,如图需要用到boost库,但是从官网下载的boost库源码没有编译成功,于是从网上下载boost预编译库,直接配置。
配置流程
1. 下载Boost库
官网下载地址:https://www.boost.org/
CSDN下载地址:boost_1_60_0下载
官网下载较慢,推荐CSDN下载,解压后文件夹路径如下图:
2. 配置环境变量
添加系统环境变量
Boost_ROOT = D:\boost_precompiled //此处替换成你的boost路径
下图是我的配置路径
重启 CMake 或 IDE 使其生效。
验证环境变量是否生效:
# 在 CMakeLists.txt 中打印变量值
message(STATUS "Boost root: ${BOOST_ROOT}")
若使用 动态链接(需依赖 DLL 文件),需将dll文件夹路径配置进系统Path变量中,如下图:
3. 修改CmakeLists
cmake_minimum_required(VERSION 3.12)
project(MonCommon)
# 添加静态库目标
add_library(MonCommon STATIC
${COMBASE_HercY} # 替换为实际源文件列表(如 src1.cpp src2.cpp)
)
if(WIN32)
# 启用 CMP0074 策略(优先使用 Boost_ROOT 变量)
cmake_policy(SET CMP0074 NEW)
# 设置 Boost 根目录(从环境变量或手动指定)
set(Boost_ROOT "$ENV{Boost_ROOT}") # 或直接写死路径,如 "D:/boost_1_60_0"
message(STATUS "Boost root: ${Boost_ROOT}")
# 设置头文件和库路径
set(BOOST_INCLUDEDIR "${Boost_ROOT}/include")
set(BOOST_LIBRARYDIR "${Boost_ROOT}/lib/Win32") # 替换为实际库目录
# 查找 Boost 组件
find_package(Boost REQUIRED COMPONENTS filesystem system
PATHS ${Boost_ROOT}
PATH_SUFFIXES Win32
NO_DEFAULT_PATH
)
# 添加包含目录
target_include_directories(MonCommon PRIVATE
${BOOST_INCLUDEDIR}
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/include/thread"
"$ENV{Qt_DIR}/include"
)
# 链接 Boost 库(自动或手动)
target_link_libraries(MonCommon PRIVATE
${Boost_LIBRARIES} # 自动链接(推荐)
# 或手动指定库文件(若自动查找失败)
# "${BOOST_LIBRARYDIR}/boost_filesystem-vc120-mt-1_60.lib"
# "${BOOST_LIBRARYDIR}/boost_system-vc120-mt-1_60.lib"
)
# 添加编译定义
target_compile_definitions(MonCommon PRIVATE
-DWIN32
-DPTW32_STATIC_LIB # 修正原图中的错误宏定义
)
endif()