cmake_minimum_required(VERSION 3.1) project(Graph) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) set(CMAKE_CXX_STANDARD 14) find_package(SDL2 REQUIRED) find_package(Vulkan REQUIRED) find_package(assimp REQUIRED) if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-DDEBUG) endif() add_executable(Graph src/main.cpp src/renderer.cpp src/worldpass.cpp src/postpass.cpp) target_link_libraries(Graph PUBLIC SDL2::SDL2 SDL2::SDL2main Vulkan::Vulkan assimp::assimp) target_include_directories(Graph PUBLIC include) macro(compile_shader src) add_custom_command( OUTPUT ${src}.spv COMMAND glslangValidator -V ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${src} -o ${CMAKE_CURRENT_BINARY_DIR}/${src}.spv DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${src} ) list(APPEND SPV_FILES ${src}.spv) endmacro() compile_shader(triangle.vert) compile_shader(triangle.frag) compile_shader(post.vert) compile_shader(post.frag) add_custom_target(BuildShaders DEPENDS ${SPV_FILES}) add_dependencies(Graph BuildShaders) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/data/suzanne.obj ${CMAKE_CURRENT_BINARY_DIR}/suzanne.obj COPYONLY)