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.
相关产品推荐
相关产品推荐

