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

如何通过CMake使GLSL着色器文件显示在Visual Studio解决方案资源管理器中

解决CMake生成VS解决方案时GLSL文件不显示的问题

问题根源

你当前的代码仅完成了文件匹配和分组声明,但没有将这些GLSL文件添加到项目的目标(可执行文件/库)中——CMake只会把被add_executable或add_library包含的文件纳入Visual Studio解决方案,source_group仅负责给已纳入的文件做分组展示,无法凭空添加未被关联的文件。

修复后的代码示例

# 匹配当前目录及所有子目录下的.glsl文件(仅当前目录用GLOB即可)
file(GLOB_RECURSE SHADER_FILES *.glsl)

# 将着色器文件添加到你的项目目标中(替换成你的实际目标名,比如MyGame)
add_executable(MyGame
    main.cpp
    renderer.cpp
    # 其他项目源文件...
    ${SHADER_FILES}  # *关键步骤:将着色器纳入项目范围*
)

# 为着色器文件创建自定义分组,在VS解决方案资源管理器中显示为"Shaders"
source_group("Shaders" FILES ${SHADER_FILES})

额外提示

  • 如果file(GLOB)未匹配到文件:检查路径是否正确,比如着色器在shaders/子目录,就改成file(GLOB SHADER_FILES shaders/*.glsl);使用GLOB_RECURSE可递归查找所有子目录下的.glsl文件。
  • 若不想让着色器参与编译(仅在VS中显示),可添加以下代码标记文件类型:
    set_source_files_properties(${SHADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE)
    
  • 建议用CMAKE_CURRENT_SOURCE_DIR指定绝对路径,避免路径解析问题:
    file(GLOB_RECURSE SHADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/shaders/*.glsl)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:31:06