Skip to content

Commit 2fa38fc

Browse files
committed
Added cmake files based on [brccabral's PR](ocornut#8583)
1 parent b829e4d commit 2fa38fc

File tree

29 files changed

+1487
-190
lines changed

29 files changed

+1487
-190
lines changed

CMakeLists.txt

Lines changed: 102 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,106 @@
1-
cmake_minimum_required(VERSION 3.22)
2-
project(imgui)
3-
4-
add_library(imgui)
5-
target_sources(imgui PRIVATE
6-
"${CMAKE_CURRENT_SOURCE_DIR}/imgui.cpp"
7-
"${CMAKE_CURRENT_SOURCE_DIR}/imgui_demo.cpp"
8-
"${CMAKE_CURRENT_SOURCE_DIR}/imgui_draw.cpp"
9-
"${CMAKE_CURRENT_SOURCE_DIR}/imgui_tables.cpp"
10-
"${CMAKE_CURRENT_SOURCE_DIR}/imgui_widgets.cpp"
11-
"${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.cpp"
12-
"${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp"
1+
cmake_minimum_required(VERSION 3.23)
2+
project(ImGui VERSION 1.92.0)
3+
4+
option(BUILD_EXAMPLES "Build examples" OFF)
5+
option(WITH_EXTRA_WARNINGS "Pass extra warnings to targets" OFF)
6+
option(EMSCRIPTEN_USE_FILE_SYSTEM "Include the misc/fonts/ folder as part of the build" OFF)
7+
8+
if (WITH_EXTRA_WARNINGS)
9+
if (MSVC)
10+
add_compile_options(/W4 /permissive-)
11+
else ()
12+
add_compile_options(-Wno-zero-as-null-pointer-constant -Wno-double-promotion -Wno-variadic-macros)
13+
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
14+
add_compile_options(-Wextra -Wpedantic)
15+
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
16+
add_compile_options(-Wshadow -Wsign-conversion)
17+
endif ()
18+
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
19+
add_compile_options(-Weverything -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -Wno-padded -Wno-poison-system-directories)
20+
elseif (MINGW)
21+
add_compile_options(-Wextra -Wpedantic)
22+
endif ()
23+
endif ()
24+
endif ()
25+
26+
add_library(imgui STATIC)
27+
add_library(imgui::imgui ALIAS imgui)
28+
29+
target_sources(imgui
30+
PUBLIC
31+
FILE_SET HEADERS
32+
FILES
33+
imconfig.h
34+
imgui.h
35+
imgui_internal.h
36+
imstb_rectpack.h
37+
imstb_textedit.h
38+
imstb_truetype.h
39+
PRIVATE
40+
imgui.cpp
41+
imgui_demo.cpp
42+
imgui_draw.cpp
43+
imgui_tables.cpp
44+
imgui_widgets.cpp
1345
)
1446

15-
target_include_directories(imgui PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
47+
if (WITH_FREETYPE)
48+
target_sources(imgui
49+
PRIVATE
50+
misc/freetype/imgui_freetype.cpp
51+
)
52+
53+
if (EMSCRIPTEN)
54+
target_compile_options(imgui PUBLIC "-sUSE_FREETYPE=1")
55+
target_link_options(imgui PUBLIC "-sUSE_FREETYPE=1")
56+
else ()
57+
find_package(freetype REQUIRED CONFIG)
58+
target_link_libraries(imgui PRIVATE Freetype::Freetype)
59+
endif ()
60+
endif ()
1661

62+
target_compile_features(imgui PRIVATE cxx_std_11)
63+
if (MSVC)
64+
target_compile_options(imgui PRIVATE /W3)
65+
else ()
66+
target_compile_options(imgui PRIVATE -Wall -Wformat)
67+
endif ()
68+
69+
target_include_directories(imgui PUBLIC
70+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
71+
$<INSTALL_INTERFACE:include>
72+
)
73+
74+
install(TARGETS imgui
75+
EXPORT imguiTargets
76+
ARCHIVE DESTINATION lib
77+
FILE_SET HEADERS DESTINATION include
78+
)
79+
80+
add_subdirectory(backends)
81+
82+
if (BUILD_EXAMPLES)
83+
add_subdirectory(examples)
84+
endif ()
85+
86+
install(EXPORT imguiTargets
87+
NAMESPACE imgui::
88+
DESTINATION share/cmake/imgui
89+
)
90+
91+
include(CMakePackageConfigHelpers)
92+
write_basic_package_version_file(
93+
"${CMAKE_CURRENT_BINARY_DIR}/imguiConfigVersion.cmake"
94+
COMPATIBILITY SameMajorVersion
95+
)
96+
97+
install(FILES
98+
"${CMAKE_CURRENT_BINARY_DIR}/imguiConfigVersion.cmake"
99+
DESTINATION share/cmake/imgui
100+
)
17101

18-
target_link_libraries(imgui PRIVATE glfw glad)
102+
configure_file(cmake/imguiConfig.cmake.in imguiConfig.cmake @ONLY)
103+
install(FILES
104+
"${CMAKE_CURRENT_BINARY_DIR}/imguiConfig.cmake"
105+
DESTINATION share/cmake/imgui
106+
)

backends/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
include(cmake/FindPackages.cmake)
2+
include(cmake/ListBackends.cmake)
3+
include(cmake/ConfigureBackends.cmake)

0 commit comments

Comments
 (0)