50 lines
1.6 KiB
CMake
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
|
|
)
|