-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
76 lines (66 loc) · 2.99 KB
/
Copy pathCMakeLists.txt
File metadata and controls
76 lines (66 loc) · 2.99 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
cmake_minimum_required(VERSION 3.16)
project(voxel-engine)
set(CMAKE_CXX_STANDARD 23)
# ─── Output ─────────────────────────────────────────────
# All executables go into build/dist, cross-platform
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/dist)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/dist)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/dist)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/dist)
# ─── Packages ───────────────────────────────────────────
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
# ─── GLAD ───────────────────────────────────────────────
add_library(glad STATIC src/glad.c)
target_include_directories(glad PUBLIC include/)
# ─── ImGui ──────────────────────────────────────────────
add_library(imgui STATIC
include/imgui/imgui.cpp
include/imgui/imgui_draw.cpp
include/imgui/imgui_tables.cpp
include/imgui/imgui_widgets.cpp
include/imgui/imgui_demo.cpp
include/imgui/imgui_impl_glfw.cpp
include/imgui/imgui_impl_opengl3.cpp
include/imgui/imgui_stdlib.cpp
)
target_include_directories(imgui PUBLIC include/ include/imgui/)
target_link_libraries(imgui PUBLIC glfw)
# ─── Main Sources ───────────────────────────────────────
add_executable(${PROJECT_NAME}
src/main.cpp
src/stb.cpp
src/Core/Engine.cpp
src/Core/Input.cpp
src/Render/Shader.cpp
src/Render/Mesh.cpp
src/Render/Texture.cpp
src/Render/Camera.cpp
)
target_include_directories(${PROJECT_NAME} PRIVATE
include/
src/
src/Core/
src/Render/
)
# ─── Link ───────────────────────────────────────────────
target_link_libraries(${PROJECT_NAME}
OpenGL::GL
glfw
glad
imgui
)
# ─── Copy assets to build/dist ──────────────────────────
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/assets
${CMAKE_BINARY_DIR}/dist/assets
)
# ─── Copy shaders to build/dist/shaders ────────────────
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/dist/shaders)
file(GLOB_RECURSE SHADER_FILES "src/shaders/*")
foreach(SHADER ${SHADER_FILES})
get_filename_component(SHADER_NAME ${SHADER} NAME)
configure_file(${SHADER} ${CMAKE_BINARY_DIR}/dist/shaders/${SHADER_NAME} COPYONLY)
endforeach()