-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
52 lines (39 loc) · 1.26 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.22)
project(VulkanPsychedelicCloths)
set(CMAKE_CXX_STANDARD 17)
# If no build type provided, assume Release mode
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif ()
# If not Debug mode, set the NDEBUG macro
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif ()
set(CMAKE_CXX_FLAGS_RELEASE "-Os")
find_package(Vulkan REQUIRED)
find_package(glfw3 3.3 REQUIRED)
# Compile shaders
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/shaders/)
# TODO: Reduce code duplication here
## Vertex shader
set(VERT_IN ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shader.vert)
set(VERT_OUT ${CMAKE_BINARY_DIR}/shaders/vert.spv)
add_custom_command(
OUTPUT ${VERT_OUT}
DEPENDS ${VERT_IN}
COMMAND glslangValidator --target-env vulkan1.0 -e main -o ${VERT_OUT} ${VERT_IN}
)
## Fragment shader
set(FRAG_IN ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shader.frag)
set(FRAG_OUT ${CMAKE_BINARY_DIR}/shaders/frag.spv)
add_custom_command(
OUTPUT ${FRAG_OUT}
DEPENDS ${FRAG_IN}
COMMAND glslangValidator --target-env vulkan1.0 -e main -o ${FRAG_OUT} ${FRAG_IN}
)
file(GLOB sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
add_executable(${PROJECT_NAME}
${sources}
${VERT_OUT} ${FRAG_OUT}
)
target_link_libraries(${PROJECT_NAME} Vulkan::Vulkan glfw)