Files
RedScarfEngine/graphics/CMakeLists.txt
T
Piotr Krygier a82550d414 Addded depenendency load tool
Added simple python script that will load needed libraries into
the project folder structure. Most libraries are now not needed to be
present in development system.
2023-08-07 13:48:30 +02:00

67 lines
1.6 KiB
CMake

find_package(Vulkan REQUIRED)
find_package(vma REQUIRED)
find_package(glfw3 REQUIRED)
find_package(glm REQUIRED)
find_package(Vulkan COMPONENTS glslc)
find_program(glslc_executable NAMES glslc HINTS ${Vulkan_GLSLC_EXECUTABLE}/..)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/shaders)
cmake_policy(SET CMP0116 NEW)
function(compile_shader)
cmake_parse_arguments(PARSE_ARGV 1 arg "" "ENV;FORMAT" "SOURCES")
foreach(source ${arg_SOURCES})
message(${source}.${arg_FORMAT})
add_custom_command(
OUTPUT ${source}.${arg_FORMAT}
DEPENDS ${source}
DEPFILE ${source}.d
COMMAND
${glslc_executable}
-o ${source}.${arg_FORMAT}
${CMAKE_CURRENT_SOURCE_DIR}/${source}
)
endforeach()
endfunction()
compile_shader(rse_graphics
ENV opengl
FORMAT num
SOURCES
shaders/shader.vert
shaders/shader.frag
)
add_library(rse_graphics SHARED shaders/shader.vert.num shaders/shader.frag.num)
target_include_directories(rse_graphics PRIVATE
${PROJECT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}
${Vulkan_INCLUDE_DIR}
${vma_INCLUDE_DIR}
${glfw3_INCLUDE_DIR}
${glm_INCLUDE_DIR}
)
message("Vulkan_INCLUDE_DIR: ${Vulkan_INCLUDE_DIR}")
target_sources(rse_graphics PRIVATE
src/window.cpp
src/vulkan_base.cpp
src/vulkan_pipeline.cpp
src/vulkan_buffers.cpp
src/vulkan_descriptors.cpp
src/rse_graphics.cpp
src/mesh_controller.cpp
src/vulkan_commons.cpp
)
target_link_libraries(rse_graphics PRIVATE
rse_utilities
${Vulkan_LIBRARIES}
${glfw}
${glm}
)