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.
67 lines
1.6 KiB
CMake
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}
|
|
)
|