Files
vulk-triangle/CMakeLists.txt
T

52 lines
1.7 KiB
CMake
Executable File

cmake_minimum_required(VERSION 4.1)
project(triangle)
set(CMAKE_CXX_STANDARD 20)
set(BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/")
set(ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
option(ENABLE_CPP20_MODULE "Enable C++ 20 module support for Vulkan" OFF)
set (CMAKE_FILES
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/compileCommands.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/platform.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/copy_files.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Vulkan.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/GLFW.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-headers.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-tools.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/slang-src.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-reflect.cmake"
)
foreach (cmake_file ${CMAKE_FILES})
include (${cmake_file})
endforeach ()
create_copy_folder_target(copy_assets_folder ${ASSETS_DIR} "${BINARY_DIR}/assets")
file(GLOB SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEADER_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}")
add_dependencies(${PROJECT_NAME} copy_assets_folder)
target_include_directories(${PROJECT_NAME} PUBLIC
"${glfw_SOURCE_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/src"
)
target_link_libraries(${PROJECT_NAME}
slang
slang-rt
core # slang::core
SPIRV-Tools-opt
spirv-reflect-static
glfw
Vulkan::cppm
)