forked from keith2018/SoftGLRender
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
113 lines (94 loc) · 3 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
cmake_minimum_required(VERSION 3.10)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
project(SoftGLRender)
set(CMAKE_CXX_STANDARD 11)
set(THIRD_PARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party")
# texture tiled memory
add_definitions("-DSOFTGL_TEXTURE_TILED")
# SIMD
add_definitions("-DSOFTGL_SIMD_OPT")
include_directories(
"${THIRD_PARTY_DIR}/glfw/include"
"${THIRD_PARTY_DIR}/glad/include"
"${THIRD_PARTY_DIR}/glm"
"${THIRD_PARTY_DIR}/assimp/include"
"${THIRD_PARTY_DIR}/assimp/contrib"
"${CMAKE_CURRENT_BINARY_DIR}/third_party/assimp/include"
"${THIRD_PARTY_DIR}/imgui"
"${THIRD_PARTY_DIR}/json11"
"${THIRD_PARTY_DIR}/stb/include"
"${CMAKE_CURRENT_SOURCE_DIR}/src"
)
# assimp
set(BUILD_SHARED_LIBS OFF)
set(ASSIMP_NO_EXPORT ON)
set(ASSIMP_BUILD_TESTS OFF)
set(ASSIMP_INSTALL OFF)
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF)
set(ASSIMP_BUILD_ZLIB ON)
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT FALSE)
set(ASSIMP_BUILD_OBJ_IMPORTER TRUE)
set(ASSIMP_BUILD_GLTF_IMPORTER TRUE)
add_subdirectory(${THIRD_PARTY_DIR}/assimp)
# main src
file(GLOB SOFTGL_SRC
${CMAKE_CURRENT_SOURCE_DIR}/src/renderer/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/app/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/*.cpp
)
# imgui src
file(GLOB IMGUI_SRC
${THIRD_PARTY_DIR}/imgui/imgui/*.cpp
)
add_executable(SoftGLRender
"${SOFTGL_SRC}"
"${IMGUI_SRC}"
"${THIRD_PARTY_DIR}/glad/src/glad.c"
"${THIRD_PARTY_DIR}/json11/json11.cpp"
src/main.cpp
)
if (WIN32)
if (MSVC)
target_link_libraries(SoftGLRender
assimp
"${THIRD_PARTY_DIR}/glfw/lib-vc2022/glfw3.lib"
"${THIRD_PARTY_DIR}/glfw/lib-vc2022/glfw3dll.lib"
)
else ()
target_link_libraries(SoftGLRender
assimp
"${THIRD_PARTY_DIR}/glfw/lib-mingw-w64/libglfw3.a"
"${THIRD_PARTY_DIR}/glfw/lib-mingw-w64/libglfw3dll.a"
)
endif ()
endif ()
if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework Cocoa -framework OpenGL -framework IOKit")
add_compile_definitions(GL_SILENCE_DEPRECATION)
target_link_libraries(SoftGLRender
assimp
"${THIRD_PARTY_DIR}/glfw/lib-macos-universal/libglfw3.a"
)
endif ()
if (UNIX AND NOT APPLE)
find_package(OpenGL REQUIRED)
target_link_libraries(SoftGLRender
assimp
glfw
OpenGL::GL
pthread
${CMAKE_DL_LIBS}
)
endif ()
if (MSVC)
target_compile_options(SoftGLRender PRIVATE $<$<BOOL:${MSVC}>:/arch:AVX2 /std:c++11>)
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mfma -O3")
endif ()
# output dir
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
# copy assets
add_custom_command(TARGET SoftGLRender POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/assets
$<TARGET_FILE_DIR:SoftGLRender>/assets)