|
| 1 | +cmake_minimum_required(VERSION 3.30) |
| 2 | + |
| 3 | +################################################################################# |
| 4 | +#### Set up the vcpkg toolchain, which must be done before the project() function. |
| 5 | +# You can also set it up by default through the CMakePresets.json file |
| 6 | +# requires the VCPKG_ROOT environment variable |
| 7 | +# The TO_CMAKE_PATH here is used to convert back slashes to forward slashes |
| 8 | +file(TO_CMAKE_PATH "$ENV{VCPKG_ROOT}" VCPKG_CMAKE_PATH) |
| 9 | +set(CMAKE_TOOLCHAIN_FILE "${VCPKG_CMAKE_PATH}/scripts/buildsystems/vcpkg.cmake") |
| 10 | +################################################################################# |
| 11 | + |
| 12 | +project(HelloVulkan LANGUAGES CXX) |
| 13 | + |
| 14 | +set(CMAKE_CXX_STANDARD 20) |
| 15 | + |
| 16 | +################################################################################# |
| 17 | +#### Search for Vulkan package. |
| 18 | +# CMake provides FindVulkan support, but requires the VULKAN_SDK environment variable |
| 19 | +# Setting by default during Vulkan SDK installation, such as E: \ Vulkan \ 1.4.309.0 |
| 20 | +find_package(Vulkan REQUIRED) |
| 21 | +################################################################################# |
| 22 | + |
| 23 | +################################################################################# |
| 24 | +#### add_executable |
| 25 | +# Import third-party libraries through vcpkg |
| 26 | +find_package(glfw3 CONFIG REQUIRED) |
| 27 | +find_package(glm CONFIG REQUIRED) |
| 28 | +find_package(Stb REQUIRED) |
| 29 | +find_package(tinyobjloader CONFIG REQUIRED) |
| 30 | + |
| 31 | +# Add executable program targets |
| 32 | +add_executable(${PROJECT_NAME} src/main.cpp) |
| 33 | + |
| 34 | +target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::Vulkan ) |
| 35 | +target_link_libraries(${PROJECT_NAME} PRIVATE glm::glm ) |
| 36 | +target_link_libraries(${PROJECT_NAME} PRIVATE glfw ) |
| 37 | +target_include_directories(${PROJECT_NAME} PRIVATE ${Stb_INCLUDE_DIR}) |
| 38 | +target_link_libraries(${PROJECT_NAME} PRIVATE tinyobjloader::tinyobjloader) |
| 39 | +################################################################################# |
| 40 | + |
| 41 | +################################################################################# |
| 42 | +#### shaders |
| 43 | +add_subdirectory(shaders) |
| 44 | +################################################################################# |
0 commit comments