You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows平台CMake标准工作流:能否编辑其生成的解决方案?

Windows平台Visual Studio开发CMake项目的标准工作流与问题解决

一、标准工作流(替代手动cmake生成sln)

直接利用Visual Studio的原生CMake支持,无需手动执行cmake命令,步骤如下:

  • 打开Visual Studio,选择「打开本地文件夹」,直接选中项目根目录(包含CMakeLists.txt的文件夹)。
  • VS会自动识别CMake项目,默认在out/build/[配置名]目录生成构建文件(比如out/build/x64-Debug),无需手动管理build目录。
  • 通过顶部工具栏的「CMake」菜单进入「CMake设置」,选择对应生成器(如Visual Studio 17 2022)、架构(x86/x64)、构建类型(Debug/Release)等。
  • 直接使用VS的「生成」按钮构建项目,或通过「CMake」→「生成全部」执行构建;运行时在顶部工具栏选择对应的可执行目标即可。

二、解决文件目录与CMakeLists.txt同步问题

1. 让新增文件存入正确目录

不要在VS默认的「CMake目标视图」(按头文件/源文件分类的视图)中添加文件,切换到**「文件夹视图」**(解决方案资源管理器顶部的视图切换按钮),该视图完全对应磁盘上的项目结构:

  • 在「文件夹视图」的include或src目录下右键→「添加」→「新建项」,文件会直接创建到对应目录;
  • 也可以直接在系统文件资源管理器中新建文件,回到VS后会自动识别并显示。

2. 同步CMakeLists.txt并显示实际目录结构

修改根目录的CMakeLists.txt,添加目录分组逻辑,同时合理管理文件列表:

cmake_minimum_required(VERSION 3.20)
project(MyProject)

# 显式指定头文件与源文件(推荐,避免意外包含无关文件)
set(HEADER_FILES
    include/hello.h
    # 新增头文件直接添加到这里
)

set(SOURCE_FILES
    src/hello.cpp
    # 新增源文件直接添加到这里
)

# 或使用GLOB自动匹配(适合文件频繁新增的场景,但需注意重新配置CMake)
# file(GLOB HEADER_FILES "${PROJECT_SOURCE_DIR}/include/*.h")
# file(GLOB SOURCE_FILES "${PROJECT_SOURCE_DIR}/src/*.cpp")

add_executable(MyProject ${SOURCE_FILES} ${HEADER_FILES})

# 配置头文件包含路径
target_include_directories(MyProject PUBLIC ${PROJECT_SOURCE_DIR}/include)

# 让VS显示与磁盘一致的目录结构,替代默认的按类型分类
source_group(TREE ${PROJECT_SOURCE_DIR} FILES ${SOURCE_FILES} ${HEADER_FILES})
  • 当新增文件后,若用显式列表方式,手动在HEADER_FILES或SOURCE_FILES中添加路径;若用GLOB,只需点击VS顶部「CMake」→「重新配置CMake」,VS会自动扫描新文件并更新项目。
  • source_group(TREE ...)是关键,它会让VS的解决方案资源管理器显示和磁盘完全一致的目录层级,而非按文件类型分组。

三、Windows开发者处理CMake项目的常见实践

  • 优先使用VS原生CMake支持,避免手动执行cmake命令,减少环境配置差异。
  • 团队协作时,在.gitignore中忽略out/、build/等生成目录,只提交源代码和CMakeLists.txt。
  • 保持CMakeLists.txt的简洁性,优先显式列出文件(比GLOB更可靠,避免包含临时文件),文件较多时可按模块拆分CMakeLists.txt(如每个子目录单独编写)。
  • 利用VS的「CMake设置」管理多配置(Debug/Release、不同架构),无需手动修改cmake参数。
  • 新增文件时,先在磁盘对应目录创建,再更新CMakeLists.txt(或重新配置),避免VS将文件生成到构建目录。

内容的提问来源于stack exchange,提问作者Otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:53:22