add_executable(HelloVulkan main.cpp) target_link_libraries(HelloVulkan PRIVATE Engine) ###### 自动构建shader ###### find_program(GLSLC glslc REQUIRED) set(SHADER_SRC_DIR ${CMAKE_SOURCE_DIR}/shaders) set(SHADER_OUT_DIR ${CMAKE_BINARY_DIR}/bin/shaders) # 定义一个 shader 编译目标:(glsl_file stage) function(auto_compile_shader glsl_file stage) # string(REGEX REPLACE "\\.glsl$" "" base "${glsl_file}") set(spv ${SHADER_OUT_DIR}/${glsl_file}.spv) add_custom_command( OUTPUT ${spv} COMMAND ${GLSLC} -fshader-stage=${stage} -o ${spv} ${SHADER_SRC_DIR}/${glsl_file} DEPENDS ${SHADER_SRC_DIR}/${glsl_file} VERBATIM) set_source_files_properties(${spv} PROPERTIES GENERATED TRUE) target_sources(${PROJECT_NAME} PRIVATE ${spv}) set_property(DIRECTORY APPEND PROPERTY HZ_SHADER_SPV_FILES ${spv}) endfunction() auto_compile_shader(simple_shader.vert vert) auto_compile_shader(simple_shader.frag frag)