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

Visual Studio 2022中CMake分组重复问题咨询

解决Visual Studio中CMake source_group分组重复问题

问题重现

你的项目结构:

test_project
│   CMakeLists.txt
|   main.cpp

CMakeLists.txt内容:

cmake_minimum_required(VERSION 3.23)

project("test_proj")

source_group("main_target" FILES "main.cpp")

add_executable(
    "test_exec"
    "main.cpp"
)

在Visual Studio中打开生成的CMake项目时,main_target分组重复显示,更换生成器无法解决。

原因分析

这不是CMake的Bug,是因为无绑定目标的source_group是全局生效的,而CMake在生成Visual Studio项目时,会自动为目标内的文件创建对应分组,两者叠加导致重复。

解决方法

方法1:将分组绑定到特定目标

在add_executable之后调用source_group,通过TARGET参数指定关联的目标,避免全局重复:

cmake_minimum_required(VERSION 3.23)

project("test_proj")

add_executable(
    "test_exec"
    "main.cpp"
)

# 绑定分组到test_exec目标
source_group("main_target" TARGET "test_exec" FILES "main.cpp")

方法2:使用现代CMake FILE_SET语法(CMake 3.23+)

通过FILE_SET定义文件集合并直接关联分组,更符合规范:

cmake_minimum_required(VERSION 3.23)

project("test_proj")

add_executable("test_exec")

# 关联源文件到目标的SOURCES文件集
target_sources("test_exec"
    FILE_SET SOURCES
    BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}"
    FILES "main.cpp"
)

# 为SOURCES文件集设置分组
source_group("main_target" FILE_SET SOURCES TARGET "test_exec")

方法3:依赖自动分组

如果不需要自定义分组的精细控制,直接删除source_group调用,CMake会自动根据文件路径生成Visual Studio中的分组。

内容的提问来源于stack exchange,提问作者Arthur O.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:39