-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathCMakeLists.txt
153 lines (130 loc) · 4.68 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
cmake_minimum_required (VERSION 3.10)
project(Diligent-Imgui CXX)
set(SOURCE
src/ImGuiDiligentRenderer.cpp
src/ImGuiImplDiligent.cpp
src/ImGuiUtils.cpp
src/ImGuiImplSDL.cpp
)
set(IMGUIZMO_QUAT_SOURCE
${IMGUIZMO_QUAT_PATH}/imGuIZMO.cpp
${IMGUIZMO_QUAT_PATH}/imGuIZMO.h
)
set(INTERFACE
interface/ImGuiDiligentRenderer.hpp
interface/ImGuiImplDiligent.hpp
interface/ImGuiUtils.hpp
interface/ImGuiImplSDL.hpp
)
if(PLATFORM_WIN32)
list(APPEND SOURCE src/ImGuiImplWin32.cpp)
list(APPEND INTERFACE interface/ImGuiImplWin32.hpp)
elseif(PLATFORM_UNIVERSAL_WINDOWS)
list(APPEND SOURCE src/ImGuiImplUWP.cpp)
list(APPEND INTERFACE interface/ImGuiImplUWP.hpp)
elseif(PLATFORM_LINUX)
list(APPEND SOURCE src/ImGuiImplLinuxXCB.cpp src/ImGuiImplLinuxX11.cpp)
list(APPEND INTERFACE interface/ImGuiImplLinuxXCB.hpp interface/ImGuiImplLinuxX11.hpp)
elseif(PLATFORM_ANDROID)
list(APPEND SOURCE src/ImGuiImplAndroid.cpp)
list(APPEND INTERFACE interface/ImGuiImplAndroid.hpp)
elseif(PLATFORM_MACOS)
list(APPEND SOURCE src/ImGuiImplMacOS.mm)
list(APPEND INTERFACE interface/ImGuiImplMacOS.hpp)
elseif(PLATFORM_IOS)
list(APPEND SOURCE src/ImGuiImplIOS.mm)
list(APPEND INTERFACE interface/ImGuiImplIOS.hpp)
elseif(PLATFORM_TVOS)
list(APPEND SOURCE src/ImGuiImplTVOS.mm)
list(APPEND INTERFACE interface/ImGuiImplTVOS.hpp)
elseif(PLATFORM_WEB)
list(APPEND SOURCE src/ImGuiImplEmscripten.cpp)
list(APPEND INTERFACE interface/ImGuiImplEmscripten.hpp)
endif()
add_library(Diligent-Imgui STATIC
${SOURCE}
${INCLUDE}
${INTERFACE}
${IMGUIZMO_QUAT_SOURCE}
)
if(TARGET imgui)
target_link_libraries(Diligent-Imgui PRIVATE imgui)
else()
set(DEAR_IMGUI_INTERFACE
${DILIGENT_DEAR_IMGUI_PATH}/imgui.h
)
set(DEAR_IMGUI_INCLUDE
${DILIGENT_DEAR_IMGUI_PATH}/imconfig.h
${DILIGENT_DEAR_IMGUI_PATH}/imgui_internal.h
${DILIGENT_DEAR_IMGUI_PATH}/imstb_rectpack.h
${DILIGENT_DEAR_IMGUI_PATH}/imstb_textedit.h
${DILIGENT_DEAR_IMGUI_PATH}/imstb_truetype.h
${DILIGENT_DEAR_IMGUI_PATH}/misc/cpp/imgui_stdlib.h
)
set(DEAR_IMGUI_SOURCE
${DILIGENT_DEAR_IMGUI_PATH}/imgui.cpp
${DILIGENT_DEAR_IMGUI_PATH}/imgui_draw.cpp
${DILIGENT_DEAR_IMGUI_PATH}/imgui_tables.cpp
${DILIGENT_DEAR_IMGUI_PATH}/imgui_widgets.cpp
${DILIGENT_DEAR_IMGUI_PATH}/misc/cpp/imgui_stdlib.cpp
)
if(PLATFORM_WIN32)
list(APPEND DEAR_IMGUI_SOURCE ${DILIGENT_DEAR_IMGUI_PATH}/backends/imgui_impl_win32.cpp)
list(APPEND DEAR_IMGUI_INCLUDE ${DILIGENT_DEAR_IMGUI_PATH}/backends/imgui_impl_win32.h)
elseif(PLATFORM_MACOS)
set(DEAR_IMGUI_V185_SOURCE
../ThirdParty/imgui_v1.85/imgui_impl_osx_v1.85.mm
../ThirdParty/imgui_v1.85/imgui_impl_osx_v1.85.h
)
target_sources(Diligent-Imgui PRIVATE ${DEAR_IMGUI_V185_SOURCE})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/imgui_v1.85 PREFIX "dear_imgui_v1.85" FILES ${DEAR_IMGUI_V185_SOURCE})
endif()
target_sources(Diligent-Imgui PRIVATE
${DEAR_IMGUI_SOURCE}
${DEAR_IMGUI_INCLUDE}
${DEAR_IMGUI_INTERFACE}
)
target_include_directories(Diligent-Imgui PUBLIC ${DILIGENT_DEAR_IMGUI_PATH})
source_group(TREE ${DILIGENT_DEAR_IMGUI_PATH} PREFIX "dear_imgui" FILES ${DEAR_IMGUI_SOURCE} ${DEAR_IMGUI_INCLUDE} ${DEAR_IMGUI_INTERFACE})
endif()
set_common_target_properties(Diligent-Imgui)
if(("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.0))
target_compile_options(Diligent-Imgui PUBLIC -Wno-nontrivial-memcall)
endif()
target_include_directories(Diligent-Imgui
PUBLIC
interface
PRIVATE
include
)
if(PLATFORM_LINUX)
target_link_libraries(Diligent-Imgui PRIVATE XCBKeySyms)
endif()
if(PLATFORM_UNIVERSAL_WINDOWS)
target_compile_definitions(Diligent-Imgui PRIVATE IMGUI_DISABLE_WIN32_FUNCTIONS)
endif()
if(PLATFORM_WIN32 AND MINGW_BUILD)
# Link with dwmapi.lib as imgui_impl_win32.cpp skips
# '#pragma comment(lib, "dwmapi")'
# when compiler is not MSVC
target_link_libraries(Diligent-Imgui PRIVATE dwmapi.lib)
endif()
source_group("src" FILES ${SOURCE})
source_group("include" FILES ${INCLUDE})
source_group("interface" FILES ${INTERFACE})
source_group("imGuIZMO.quat" FILES ${IMGUIZMO_QUAT_SOURCE})
target_link_libraries(Diligent-Imgui
PRIVATE
Diligent-BuildSettings
Diligent-Common
Diligent-PlatformInterface
Diligent-GraphicsEngineInterface
Diligent-GraphicsAccessories
Diligent-GraphicsTools
)
set_target_properties(Diligent-Imgui PROPERTIES
FOLDER DiligentTools
)
if(DILIGENT_INSTALL_TOOLS)
install_tools_lib(Diligent-Imgui)
endif()