mirage_old/cmake/compile_shaders.cmake
daiqingshuang b7936d2e1a init
2025-02-08 12:59:59 +08:00

50 lines
1.6 KiB
CMake

# 查找编译器和Python
find_program(PYTHON_EXECUTABLE python3)
if (NOT PYTHON_EXECUTABLE)
find_program(PYTHON_EXECUTABLE python)
endif ()
if (NOT PYTHON_EXECUTABLE)
message(FATAL_ERROR "Python executable not found")
endif ()
find_program(SLANG_COMPILER slangc REQUIRED)
message(STATUS "Python executable: ${PYTHON_EXECUTABLE}")
message(STATUS "SLANG compiler: ${SLANG_COMPILER}")
set(SHADER_PATH_FILE ${CMAKE_CURRENT_SOURCE_DIR}/scripts/shader_paths.txt)
# 删除文件
file(REMOVE ${SHADER_PATH_FILE})
function(shader_compile_target INPUT_DIR)
# 将路径写到scripts/shader_paths.txt中
file(WRITE ${SHADER_PATH_FILE} ${INPUT_DIR})
endfunction()
set(SLANGC_ARGS "")
if (LLGL_BUILD_RENDERER_OPENGL OR LLGL_BUILD_RENDERER_OPENGLES3 OR LLGL_BUILD_RENDERER_WEBGL)
list(APPEND SLANGC_ARGS "--opengl")
endif ()
if (LLGL_BUILD_RENDERER_VULKAN)
list(APPEND SLANGC_ARGS "--vulkan")
endif ()
if (LLGL_BUILD_RENDERER_DIRECT3D11)
list(APPEND SLANGC_ARGS "--d3d11")
endif ()
if (LLGL_BUILD_RENDERER_DIRECT3D12)
list(APPEND SLANGC_ARGS "--d3d12")
endif ()
if (LLGL_BUILD_RENDERER_METAL)
list(APPEND SLANGC_ARGS "--metal")
endif ()
# 如果是Debug模式, 添加--debug选项
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND SLANGC_ARGS "--debug")
endif ()
# 添加自定义命令, 用于编译着色器, 调用scripts/compile_shaders.py
add_custom_target(compile_shaders
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/compile_shaders.py --shader-list ${SHADER_PATH_FILE} --output-dir ${SHADER_OUTPUT_DIR} ${SLANGC_ARGS}
COMMENT "Compiling shaders"
VERBATIM
)