-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
83 lines (69 loc) · 1.85 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
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
SET(EXENAME 3yee)
PROJECT(${EXENAME})
### Sources
SET(SOURCES
src/axes.cpp
src/camera.cpp
src/main.cpp
src/renderer.cpp
src/shader.cpp
src/surface.cpp
src/texture.cpp
)
INCLUDE_DIRECTORIES(src)
SET(COPIES
3yee.html
shaders
)
if (${EMSCRIPTEN})
ADD_COMPILE_OPTIONS("SHELL:-s ALLOW_MEMORY_GROWTH=1 --no-heap-copy")
ADD_LINK_OPTIONS("SHELL:-s ALLOW_MEMORY_GROWTH=1 --no-heap-copy")
endif()
ADD_COMPILE_OPTIONS(-g -O0 -Wall -Wextra -fno-strict-aliasing)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
### Dependencies
SET(EMSCRIPTEN FALSE CACHE BOOL "Build with emscripten")
if (NOT ${EMSCRIPTEN})
FIND_PACKAGE(SDL2 REQUIRED)
FIND_PACKAGE(GLEW 2.0 REQUIRED)
FIND_PACKAGE(OpenGL REQUIRED)
else()
ADD_COMPILE_OPTIONS("SHELL:-s USE_SDL=2 -s USE_WEBGL2=1")
ADD_LINK_OPTIONS("SHELL:-s USE_SDL=2 -s USE_WEBGL2=1")
endif()
ADD_SUBDIRECTORY(stb-image)
INCLUDE_DIRECTORIES(stb-image)
ADD_SUBDIRECTORY(imgui)
INCLUDE_DIRECTORIES(imgui/imgui imgui/imgui/examples imgui/imgui/misc/cpp)
ADD_SUBDIRECTORY(glm)
INCLUDE_DIRECTORIES(glm)
### Executable creation
ADD_EXECUTABLE(${EXENAME} ${SOURCES})
TARGET_LINK_LIBRARIES(${EXENAME}
stb-image
imgui
${glm_LIBRARY}
)
if (NOT ${EMSCRIPTEN})
TARGET_LINK_LIBRARIES(${EXENAME}
GLEW::GLEW
OpenGL::OpenGL
SDL2::SDL2
)
else()
TARGET_LINK_OPTIONS(${EXENAME} PRIVATE "SHELL:--preload-file shaders")
endif()
SET(COPIES_IN ${COPIES})
SET(COPIES_OUT ${COPIES})
LIST(TRANSFORM COPIES_IN PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/)
LIST(TRANSFORM COPIES_OUT PREPEND ${CMAKE_CURRENT_BINARY_DIR}/)
ADD_CUSTOM_COMMAND(
OUTPUT ${COPIES_OUT}
COMMAND cp -r ${COPIES_IN} ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${COPIES_IN}
)
ADD_CUSTOM_TARGET(copying
DEPENDS ${COPIES_OUT}
)
ADD_DEPENDENCIES(${EXENAME} copying)