cmake_minimum_required (VERSION 3.19) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(WIN32) set(CMAKE_CXX_FLAGS "-D_DEBUG") else() set(CMAKE_CXX_FLAGS "-D_DEBUG -Wall") endif() project(Pleascach) if(WIN32) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") endif() file(GLOB SOURCES pléascach.cpp */*.cpp ) add_executable (pleascach ${SOURCES}) # shader compilation file(GLOB SHADER_SOURCE_FILES assets/shaders/*.frag assets/shaders/*.vert ) foreach(SHADER_SOURCE ${SHADER_SOURCE_FILES}) message("Processing shader file") get_filename_component(FILE_NAME ${SHADER_SOURCE} NAME) set(SPIRV "${CMAKE_SOURCE_DIR}/assets/shaders/${FILE_NAME}.spv") add_custom_command( OUTPUT ${SPIRV} COMMAND ${Vulkan_GLSLC_EXECUTABLE} -o ${SPIRV} ${SHADER_SOURCE} DEPENDS ${SHADER_SOURCE} ) list(APPEND SPIRV_BIN_FILES ${SPIRV}) endforeach(SHADER_SOURCE) add_custom_target ( shaders DEPENDS ${SPIRV_BIN_FILES} ) add_dependencies(pleascach shaders) # copy assets somewhere accessible by the accessable add_custom_command( TARGET shaders POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "$/assets" "$/assets") find_package(glfw3 3.3 REQUIRED) find_package(Vulkan REQUIRED) if(UNIX) set(GLFW3_LIBRARY glfw) endif() include_directories(${CMAKE_CURRENT_LIST_DIR} include ${GLFW3_INCLUDE_DIR}) target_link_libraries(pleascach ${GLFW3_LIBRARY} Vulkan::Vulkan)