-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
53 lines (41 loc) · 1.35 KB
/
Copy pathCMakeLists.txt
File metadata and controls
53 lines (41 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
set(SHADER_FILES
${CMAKE_SOURCE_DIR}/run/shader/post.frag
${CMAKE_SOURCE_DIR}/run/shader/post.vert
${CMAKE_SOURCE_DIR}/run/shader/simple.frag
${CMAKE_SOURCE_DIR}/run/shader/simple.vert
${CMAKE_SOURCE_DIR}/run/shader/staticpost.frag
)
macro(link target)
target_link_libraries(${target}
Vulkan::Vulkan
cglm::cglm
glfw
vkutils
-lm
)
endmacro()
add_custom_target(shaders)
add_executable(vkuTestBasicCube basic_cube.c)
add_executable(vkuTestPostProcessingCube postprocessing_cube.c)
add_dependencies(vkuTestBasicCube shaders)
add_dependencies(vkuTestPostProcessingCube shaders)
link(vkuTestBasicCube)
link(vkuTestPostProcessingCube)
file(COPY ${CMAKE_SOURCE_DIR}/run/resources
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
make_directory(${CMAKE_CURRENT_BINARY_DIR}/shader)
foreach(FILE ${SHADER_FILES})
get_filename_component(FILE_WE ${FILE} NAME_WE)
if(${FILE} MATCHES "(vert)")
set(OUTPUT_FILE "${FILE_WE}_vert.spv")
elseif(${FILE} MATCHES "(frag)")
set(OUTPUT_FILE "${FILE_WE}_frag.spv")
endif()
message(${OUTPUT_FILE})
add_custom_command(TARGET shaders
COMMAND glslc ${FILE} -o "${CMAKE_CURRENT_BINARY_DIR}/shader/${OUTPUT_FILE}"
MAIN_DEPENDENCY ${FILE}
COMMENT "Compiling ${FILE} with glslc"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
VERBATIM)
endforeach(FILE)