-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
102 lines (85 loc) · 3.23 KB
/
CMakeLists.txt
File metadata and controls
102 lines (85 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
cmake_minimum_required(VERSION 3.28.0)
project(VEE VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
if (WIN32)
set(VEE_PLATFORM_SUFFIX _win32)
elseif (LINUX)
set(VEE_PLATFORM_SUFFIX _linux)
endif ()
if (MSVC)
set(VEE_WARNING_FLAGS /W4 /WX)
else()
set(VEE_WARNING_FLAGS -Wall -Wextra -pedantic -pedantic-errors -Wconversion -Werror)
endif()
if (VEE_BUILD_TYPE STREQUAL "Debug" OR VEE_BUILD_TYPE STREQUAL "Development")
add_compile_definitions(VEE_DEBUG)
endif ()
# download CPM.cmake
file(
DOWNLOAD
https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.41.0/CPM.cmake
${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake
EXPECTED_HASH SHA256=e570f03806b9aae2082ca5b950a9e6b3b41ad56972a78a876aedcaad16653116
)
include(${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake)
# ---------------- DEPENDENCIES ------------------------
# Vulkan SDK should be installed on the system
find_package(Vulkan REQUIRED SPIRV-Tools)
# cmake FindVulkan does not yet support finding Slang. We have to manually add it.
add_library(slang::slang STATIC IMPORTED GLOBAL)
set_target_properties(slang::slang PROPERTIES
IMPORTED_LOCATION $ENV{VULKAN_SDK}/Lib/slang.lib
INTERFACE_INCLUDE_DIRECTORIES ${Vulkan_INCLUDE_DIRS}
)
#CPMAddPackage("gh:GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator@3.2.1")
CPMAddPackage("gh:YaaZ/VulkanMemoryAllocator-Hpp@3.2.1")
CPMAddPackage(
URI "gh:charles-lunarg/vk-bootstrap@1.3.296"
OPTIONS "VK_BOOTSTRAP_DISABLE_WARNINGS ON"
)
CPMAddPackage(
NAME glfw
GITHUB_REPOSITORY glfw/glfw
GIT_TAG 3.3.8
OPTIONS
"GLFW_BUILD_DOCS OFF"
"GLFW_BUILD_TESTS OFF"
"GLFW_BUILD_EXAMPLES OFF"
)
CPMAddPackage("gh:g-truc/glm#1.0.1")
CPMAddPackage("gh:ocornut/imgui@1.91.4-docking")
CPMAddPackage("gh:skypjack/entt@3.14.0")
CPMAddPackage("gh:Neargye/magic_enum@0.9.7")
CPMAddPackage("gh:nothings/stb#f056911")
set(TRACY_FIBERS ON)
CPMAddPackage("gh:wolfpld/tracy@0.12.2")
if (stb_ADDED)
add_library(stb INTERFACE)
target_include_directories(stb SYSTEM INTERFACE ${stb_SOURCE_DIR})
endif ()
if (imgui_ADDED)
add_library(imgui STATIC
${imgui_SOURCE_DIR}/imgui.cpp
${imgui_SOURCE_DIR}/imgui_draw.cpp
${imgui_SOURCE_DIR}/imgui_demo.cpp
${imgui_SOURCE_DIR}/imgui_tables.cpp
${imgui_SOURCE_DIR}/imgui_widgets.cpp
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
${imgui_SOURCE_DIR}/backends/imgui_impl_vulkan.cpp)
target_link_libraries(imgui PRIVATE glfw)
target_include_directories(imgui PRIVATE ${Vulkan_INCLUDE_DIR} ${imgui_SOURCE_DIR})
target_include_directories(imgui SYSTEM INTERFACE ${imgui_SOURCE_DIR})
target_compile_definitions(imgui PUBLIC IMGUI_IMPL_VULKAN_NO_PROTOTYPES)
target_compile_options(imgui PRIVATE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:
-Wno-nontrivial-memcall>
)
endif ()
add_subdirectory(Source/HelloTriangle)
add_subdirectory(Source/VeeEditor)
add_subdirectory(Source/VeeRuntime)
add_subdirectory(Source/VeeCore)
add_subdirectory(Tests/VeeCore)