如何将add_subdirectory引入的项目放入Visual Studio筛选器?
使用shaderc时清理Visual Studio解决方案的杂乱项目
我在项目中需要用到shaderc,于是将它作为子模块加入,CMake配置如下:
add_subdirectory(3rdparty/shaderc) target_link_libraries(MyProject PUBLIC shaderc)
但这导致Visual Studio解决方案里塞满了shaderc的各类项目和筛选器(除GLFW3外其余相关项目都来自shaderc),界面非常杂乱。想问有没有办法把这些项目隐藏或者放到单独的筛选器里?
替代解决方案(通过Vulkan SDK链接shaderc)
尝试过将子模块项目隐藏的方案但没能在shaderc上实现,于是转而通过Vulkan SDK来链接shaderc,具体配置如下:
- 引入Vulkan并关联shaderc组件
find_package(Vulkan REQUIRED COMPONENTS shaderc_combined) target_link_libraries(QuickPreviewVisualize PUBLIC ${Vulkan_LIBRARIES}) target_link_libraries(QuickPreviewVisualize PUBLIC ${Vulkan_shaderc_combined_LIBRARY}) target_include_directories(QuickPreviewVisualize PUBLIC ${Vulkan_INCLUDE_DIR})
- 区分调试与发布版本的链接库
为保证调试模式正常运行,需要单独链接调试版本的shaderc_combinedd.lib,可通过字符串替换实现分版本配置:
string(REPLACE ".lib" "d.lib" SHADERC_DEBUG ${Vulkan_shaderc_combined_LIBRARY}) target_link_libraries(QuickPreviewVisualize PUBLIC debug ${SHADERC_DEBUG} optimized ${Vulkan_shaderc_combined_LIBRARY})
- 屏蔽缺失pdb文件的警告
Vulkan SDK提供的shaderc调试版本不附带pdb文件,编译时会产生大量链接警告,可通过以下配置禁用该类警告:
# Vulkan SDK中的shaderc调试版本不提供.pdb文件,因此抑制缺失pdb的警告 target_link_options(MyProject PUBLIC "/ignore:4099")
内容的提问来源于Stack Exchange,提问作者Tare
相关产品推荐
相关产品推荐

