Select Git revision
CMakeLists.txt
-
Gabor Galgoczy authoredGabor Galgoczy authored
CMakeLists.txt 2.69 KiB
cmake_minimum_required(VERSION 3.25)
include(FetchContent)
set(FETCHCONTENT_QUIET OFF)
project(renderer C CXX)
add_executable(${PROJECT_NAME})
option(engine_debug "Turn on debug mode" ON)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
if (MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE
/W4
/WX
)
else ()
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall
-Wextra
-Werror
-Wno-missing-field-initializers
)
endif ()
target_precompile_headers(${PROJECT_NAME} PRIVATE
<algorithm>
<concepts>
<fstream>
<functional>
<iostream>
<limits>
<memory>
<ranges>
<set>
<span>
<sstream>
<stdexcept>
<string>
<string_view>
<thread>
<type_traits>
<unordered_map>
<utility>
<vector>
<variant>
)
# Vulkan
find_package(Vulkan REQUIRED)
target_compile_definitions(${PROJECT_NAME} PRIVATE
VULKAN_HPP_NO_TO_STRING
VULKAN_HPP_NO_CONSTRUCTORS
VULKAN_HPP_NO_SETTERS
VULKAN_HPP_NO_SPACESHIP_OPERATOR
)
if (engine_debug)
target_compile_definitions(${PROJECT_NAME} PRIVATE ENGINE_VULKAN_DEBUG)
endif ()
target_precompile_headers(${PROJECT_NAME} PRIVATE <vulkan/vulkan.hpp>)
target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::Vulkan)
# VulkanMemoryAllocator
set(STATIC_VULKAN_FUNCTIONS 0)
set(DYNAMIC_VULKAN_FUNCTIONS 1)
FetchContent_Declare(VulkanMemoryAllocator
GIT_REPOSITORY https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
GIT_TAG 2f382df
GIT_PROGRESS TRUE
SYSTEM
)
FetchContent_MakeAvailable(VulkanMemoryAllocator)
target_compile_definitions(${PROJECT_NAME} PRIVATE
VMA_STATIC_VULKAN_FUNCTIONS=${STATIC_VULKAN_FUNCTIONS}
VMA_DYNAMIC_VULKAN_FUNCTIONS=${DYNAMIC_VULKAN_FUNCTIONS}
)
target_link_libraries(${PROJECT_NAME} PRIVATE VulkanMemoryAllocator)
# GLFW
FetchContent_Declare(GLFW
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.3.9
GIT_PROGRESS TRUE
SYSTEM
)
FetchContent_MakeAvailable(GLFW)
target_compile_definitions(${PROJECT_NAME} PRIVATE
GLFW_INCLUDE_VULKAN
)
target_link_libraries(${PROJECT_NAME} PRIVATE glfw)
# glm
FetchContent_Declare(glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG 0.9.9.8
GIT_PROGRESS TRUE
SYSTEM
)
FetchContent_MakeAvailable(glm)
target_compile_definitions(${PROJECT_NAME} PRIVATE
GLM_FORCE_DEPTH_ZERO_TO_ONE
)
target_precompile_headers(${PROJECT_NAME} PRIVATE <glm/glm.hpp>)
target_link_libraries(${PROJECT_NAME} PRIVATE glm::glm)
add_subdirectory(src)