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 )