You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.8 KiB
82 lines
1.8 KiB
# Copyright 2022 Simon Boyé
|
|
|
|
cmake_minimum_required(VERSION 3.0.0)
|
|
project(vk_expe VERSION 0.1.0)
|
|
|
|
find_package(Eigen3 3.3 REQUIRED)
|
|
find_package(Vulkan REQUIRED)
|
|
find_package(SDL2 2.0.18 REQUIRED)
|
|
|
|
include(CTest)
|
|
enable_testing()
|
|
|
|
function(add_shaders TARGET)
|
|
foreach(SRC ${ARGN})
|
|
set(DST "${CMAKE_CURRENT_BINARY_DIR}/${SRC}.spv")
|
|
list(APPEND SPVS "${DST}")
|
|
get_filename_component(DST_DIR "${DST}" DIRECTORY)
|
|
file(MAKE_DIRECTORY "${DST_DIR}")
|
|
add_custom_command(
|
|
OUTPUT "${DST}"
|
|
COMMAND "$ENV{VULKAN_SDK}/bin/glslc" "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}" -o "${DST}"
|
|
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}"
|
|
)
|
|
endforeach()
|
|
|
|
add_custom_target(
|
|
${TARGET}_shaders
|
|
DEPENDS ${SPVS}
|
|
)
|
|
|
|
add_dependencies(${TARGET} ${TARGET}_shaders)
|
|
endfunction()
|
|
|
|
add_executable(vk_expe
|
|
src/core/math.cpp
|
|
src/core/utils.cpp
|
|
src/core/Logger.cpp
|
|
|
|
src/vk/Context.cpp
|
|
src/vk/CommandPool.cpp
|
|
src/vk/CommandBuffer.cpp
|
|
src/vk/Fence.cpp
|
|
src/vk/Semaphore.cpp
|
|
src/vk/Framebuffer.cpp
|
|
src/vk/ShaderModule.cpp
|
|
src/vk/Pipeline.cpp
|
|
src/vk/Memory.cpp
|
|
src/vk/Buffer.cpp
|
|
src/vk/ImageView.cpp
|
|
src/vk/Swapchain.cpp
|
|
src/vk/RenderPass.cpp
|
|
|
|
src/main.cpp
|
|
src/Simplex.cpp
|
|
src/Planet.cpp
|
|
src/VkExpe.cpp
|
|
src/VulkanTutorial.cpp
|
|
)
|
|
|
|
add_shaders(vk_expe
|
|
shaders/shader.vert
|
|
shaders/shader.geom
|
|
shaders/shader.frag
|
|
)
|
|
|
|
target_include_directories(vk_expe
|
|
PRIVATE src
|
|
)
|
|
|
|
target_compile_features(vk_expe
|
|
PUBLIC cxx_std_17
|
|
)
|
|
|
|
target_link_libraries(vk_expe
|
|
PUBLIC Eigen3::Eigen
|
|
PUBLIC Vulkan::Vulkan
|
|
PUBLIC SDL2::SDL2
|
|
)
|
|
|
|
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
|
|
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
|
include(CPack)
|
|
|