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+ )
0 commit comments