-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
85 lines (68 loc) · 2.64 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.10.0)
set(CMAKE_TOOLCHAIN_FILE "./vcpkg/scripts/buildsystems/vcpkg.cmake")
project(SpaceGame)
option(ENABLE_PROFILING "" OFF)
find_package(SDL2 CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
find_package(harfbuzz CONFIG REQUIRED)
find_package(Freetype REQUIRED)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
include_directories(src imgui extern)
include_directories(src/pyrolib/extern)
add_library(imgui SHARED
imgui/backends/imgui_impl_opengl3.cpp
imgui/imgui.cpp
imgui/imgui_demo.cpp
imgui/imgui_draw.cpp
imgui/imgui_tables.cpp
imgui/imgui_widgets.cpp
)
add_library(space_common SHARED
src/assetmanager/asset_set.cc
src/assetmanager/assetmanager.cc
src/assetmanager/loader.cc
src/common/sdef_parser.cc
src/input/input.cc
src/renderer/render_batch.cc
src/renderer/render_pass_bloom.cc
src/renderer/render_pass_geometry.cc
src/renderer/render_pass_tonemap.cc
src/renderer/render_utils.cc
src/renderer/renderer.cc
src/renderer/text/glyph_builder.cc
src/renderer/text/render_text.cc
)
add_library(space_opengl SHARED src/opengl/renderer.cc)
add_library(space_code SHARED src/code/code.cc)
add_executable(space WIN32 src/win32/win32_space.cc imgui/backends/imgui_impl_sdl2.cpp)
include_directories(tracy/public)
if(${ENABLE_PROFILING})
add_library(tracy SHARED tracy/public/TracyClient.cpp)
set(TRACY_DEFINES TRACY_ENABLE TRACY_NO_CALLSTACK_INLINES)
target_compile_definitions(tracy PRIVATE TRACY_EXPORTS ${TRACY_DEFINES})
set(ADD_DEFINES TRACY_IMPORTS ${TRACY_DEFINES})
add_compile_definitions(${ADD_DEFINES})
set(ADD_LINKS tracy)
endif()
add_subdirectory(src/pyrolib)
target_link_libraries(space_common pyro glm::glm imgui Freetype::Freetype harfbuzz::harfbuzz ${ADD_LINKS})
target_compile_definitions(space_common PRIVATE EXPORT_WIN)
target_compile_definitions(imgui PRIVATE "IMGUI_API=__declspec(dllexport)")
target_link_libraries(space
PRIVATE
space_common
glm::glm
imgui
${ADD_LINKS}
$<TARGET_NAME_IF_EXISTS:SDL2::SDL2main>
$<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>
)
target_link_libraries(space_code PRIVATE space_common glm::glm ${ADD_LINKS})
target_link_libraries(space_opengl PRIVATE space_common glm::glm ${ADD_LINKS})
add_dependencies(space space_opengl space_common space_code)
set_target_properties(space_opengl PROPERTIES PDB_NAME "space_opengl_%random%")
set_target_properties(space_code PROPERTIES PDB_NAME "space_code_%random%")