如何用CMake生成与源目录结构一致的MSVC Qt项目文件?
CMake生成MSVC项目时匹配源码目录结构的解决方法
关键操作步骤
假设你的源码里有Source目录,里面包含各级子文件夹和源文件,按以下方式修改CMakeLists.txt即可:
- 递归收集源文件(保留相对路径)
用file(GLOB_RECURSE)把Source下的所有源文件、头文件(含Qt的ui/qrc文件)都收集起来,确保路径是相对于项目根目录的:
file(GLOB_RECURSE PROJECT_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.ui" "${CMAKE_CURRENT_SOURCE_DIR}/Source/*.qrc" )
- 映射目录结构到MSVC
创建可执行文件后,用source_group(TREE)命令将源码的目录结构直接同步到MSVC项目中:
add_executable(YourProjectName ${PROJECT_SOURCES}) # 核心:把源码根目录作为树的起点,让MSVC显示和源码一致的目录 source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${PROJECT_SOURCES})
- Qt项目常规配置(按需添加)
如果是Qt项目,别忘了添加依赖模块:
find_package(Qt6 REQUIRED COMPONENTS Core Widgets) target_link_libraries(YourProjectName PRIVATE Qt6::Core Qt6::Widgets)
验证
重新运行CMake生成解决方案,打开MSVC 2022后点击"显示所有文件",就能看到Source文件夹和源码里的结构完全一致,文件会按实际子目录排列,不再堆在项目根目录。
内容的提问来源于stack exchange,提问作者Idris Khan
相关产品推荐
相关产品推荐

