Files
atdunbg f73e52926f Reorganize directory layout: editor panels/, grouped shaders, drop stale header
- App/editor: move 7 panels into panels/ (Editor core stays at root)
- shaders/: group into pbr/ post/ debug/ env/ (runtime load paths updated)
- Delete outdated duplicate Engine/src/Renderer/VulkanAssetUploader.h
2026-10-07 09:52:17 +08:00

59 lines
2.2 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# App 层源文件:main + editor/(docking 编辑器)+ scripts/(C++ 原生脚本)
file(GLOB EDITOR_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/editor/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/editor/*.h
${CMAKE_CURRENT_SOURCE_DIR}/editor/panels/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/editor/panels/*.h)
file(GLOB SCRIPT_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.cpp)
# editor 形态(HELLOVULKAN_EDITOR=ON)编入 editor/(docking 编辑器);
# game 形态只有 main + scripts(编辑器源码整体不进产物)
if(HELLOVULKAN_EDITOR)
add_executable(HelloVulkan main.cpp ${EDITOR_SOURCES} ${SCRIPT_SOURCES})
else()
add_executable(HelloVulkan main.cpp ${SCRIPT_SOURCES})
endif()
target_include_directories(HelloVulkan PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/editor)
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)
function(auto_compile_shader glsl_file) # glsl_file 是相对 SHADER_SRC_DIR 的路径
# 推断 stage:'.vert' -> 'vert'
get_filename_component(stage ${glsl_file} EXT)
string(SUBSTRING ${stage} 1 -1 stage)
set(spv ${SHADER_OUT_DIR}/${glsl_file}.spv)
get_filename_component(spv_dir ${spv} DIRECTORY) # 保留子目录
add_custom_command(
OUTPUT ${spv}
COMMAND ${CMAKE_COMMAND} -E make_directory ${spv_dir}
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()
file(GLOB_RECURSE SHADER_SOURCES
CONFIGURE_DEPENDS # 新增 shader 时自动重配
RELATIVE ${SHADER_SRC_DIR}
${SHADER_SRC_DIR}/*.vert
${SHADER_SRC_DIR}/*.frag
${SHADER_SRC_DIR}/*.comp)
foreach (f ${SHADER_SOURCES})
auto_compile_shader(${f})
endforeach()