CMake 工程模板:VS2022 + Boost(静态库)
这是一个可直接复制的 Boost 工程模板(VS2022 + CMake + Ninja)。模板的作用:新建 Boost 项目时不用每次从零配置——复制模板、改项目名、加源文件即可。整套约定是:CMake 为唯一构建系统、依赖走环境变量 + find_package、构建输出在 out/build/、不写死路径。 前置环境变量: BOOST_ROOT = <Boost根目录> Boost 是静态库(vc143 构建),不用加 PATH,运行时不需要 dll 一、目录结构 <项目根目录>\BoostTemplate\ ├── CMakeLists.txt ├── CMakePresets.json ├── .gitignore ├── src\ │ └── main.cpp └── out\ └── build\ 二、CMakeLists.txt(复制到项目根目录) cmake_minimum_required(VERSION 3.20) project(BoostTemplate LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # ---------- Boost ---------- # BOOST_ROOT 由 CMakePresets.json 从环境变量注入,这里不写路径 set(Boost_NO_SYSTEM_PATHS ON) # 只从 BOOST_ROOT 找,不扫系统路径 set(Boost_USE_STATIC_LIBS ON) # 用静态库(vc143 静态构建) set(Boost_USE_MULTITHREADED ON) # 多线程版本 find_package(Boost 1.81 REQUIRED COMPONENTS filesystem system thread) # ---------- 源文件 ---------- set(SOURCES src/main.cpp ) add_executable(${PROJECT_NAME} ${SOURCES}) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries(${PROJECT_NAME} PRIVATE Boost::filesystem Boost::system Boost::thread ) 三、CMakePresets.json(复制到项目根目录) { "version": 3, "configurePresets": [ { "name": "debug", "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "BOOST_ROOT": "$env{BOOST_ROOT}", "Boost_NO_SYSTEM_PATHS": "ON", "Boost_USE_STATIC_LIBS": "ON", "Boost_USE_MULTITHREADED": "ON" } }, { "name": "release", "inherits": "debug", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } } ], "buildPresets": [ { "name": "debug", "configurePreset": "debug" }, { "name": "release", "configurePreset": "release" } ] } 版本待核实:预设文件 "version": 3 与 CMakeLists.txt 里 cmake_minimum_required(VERSION 3.20) 的版本要求是否匹配(version 3 预设需较新的 CMake),首次配置前请确认本机 / VS2022 自带 CMake 的实际版本。 ...
豫公网安备41108202000982号