1
0
Fork 0
mirror of https://github.com/ocornut/imgui.git synced 2026-01-11 00:04:24 +00:00
imgui/examples/ImGuiTargets.cmake
Konstantin Podsvirov b567ffe7e0 Add CMake project
Export Dear ImGui as CMake's ImGui package.

Options:
- ImGui_USER_CONFIG;
- ImGui_EXAMPLES;
- ImGui_BACKENDS;
- ImGui_MISC;
- ImGui_3RDPARTY;
- ImGui_OPENGL_LOADER;
- ImGui_FREETYPE;
- ImGui_TOOLS;
- ImGui_PACKAGE.

Export targets:
- ImGui::Core;
- ImGui::ImplGLUT;
- ImGui::ImplSDL2;
- ImGui::ImplSDLRenderer2;
- ImGui::ImplSDL3;
- ImGui::ImplSDLRenderer3;
- ImGui::ImplGlfw;
- ImGui::ImplOpenGL2;
- ImGui::ImplOpenGL3;
- ImGui::ImplVulkan;
- ImGui::FreeType;
- ImGui::StdLib;
- ImGui::BinaryToCompressedC.

Import targets from:
- build directory;
- installed package.

Examples:
- example_null;
- example_glut_opengl2
- example_sdl2_sdlrenderer2;
- example_sdl2_opengl2;
- example_sdl2_opengl3;
- example_sdl2_vulkan;
- example_sdl3_sdlrenderer3;
- example_sdl3_opengl3;
- example_sdl3_vulkan;
- example_glfw_opengl2;
- example_glfw_opengl3;
- example_glfw_vulkan.

Presets:
- vcpkg (require $env{VCPKG_ROOT});
- emscripten (inherits vcpkg and require $env{EMSCRIPTEN_ROOT}).
2025-06-25 21:37:37 +03:00

173 lines
4.6 KiB
CMake

include("${CMAKE_CURRENT_LIST_DIR}/ImGuiModule.cmake")
set(ImGui_SUPPORTED_COMPONENTS)
set(ImGui_AVAILABLE_COMPONENTS)
set(_ImGui_DEFINITIONS)
set(_ImGui_LIBRARIES)
if(NOT "${ImGui_USER_CONFIG}" STREQUAL "")
list(APPEND _ImGui_DEFINITIONS "IMGUI_USER_CONFIG=${ImGui_USER_CONFIG}")
endif()
if(ImGui_FREETYPE)
list(APPEND _ImGui_DEFINITIONS "IMGUI_ENABLE_FREETYPE")
list(APPEND _ImGui_LIBRARIES FreeType)
endif()
if(MINGW)
list(APPEND _ImGui_LIBRARIES "imm32")
endif()
imgui_core(
HEADERS
imconfig.h
imgui.h
imgui_internal.h
PRIVATE_HEADERS
imstb_textedit.h
imstb_truetype.h
imstb_rectpack.h
SOURCES_GLOB
imgui*.cpp
DEFINITIONS ${_ImGui_DEFINITIONS}
LIBRARIES ${_ImGui_LIBRARIES})
unset(_ImGui_DEFINITIONS)
unset(_ImGui_LIBRARIES)
if(APPLE)
set(_ImGui_PACKAGES GLUT)
set(_ImGui_TARGETS GLUT::GLUT)
else()
set(_ImGui_PACKAGES FreeGLUT)
set(_ImGui_TARGETS FreeGLUT::freeglut)
endif()
imgui_backend(ImplGLUT
HEADERS imgui_impl_glut.h
SOURCES imgui_impl_glut.cpp
PACKAGES ${_ImGui_PACKAGES}
TARGETS ${_ImGui_TARGETS})
unset(_ImGui_PACKAGES)
unset(_ImGui_TARGETS)
if(EMSCRIPTEN)
set(_ImGui_COMPILE_OPTIONS "SHELL:-s USE_SDL=2")
set(_ImGui_LINK_OPTIONS ${_ImGui_COMPILE_OPTIONS})
else()
set(_ImGui_PACKAGES SDL2)
set(_ImGui_TARGETS SDL2::SDL2main SDL2::SDL2)
endif()
imgui_backend(ImplSDL2
HEADERS imgui_impl_sdl2.h
SOURCES imgui_impl_sdl2.cpp
COMPILE_OPTIONS ${_ImGui_COMPILE_OPTIONS}
LINK_OPTIONS ${_ImGui_LINK_OPTIONS}
PACKAGES ${_ImGui_PACKAGES}
TARGETS ${_ImGui_TARGETS})
if(NOT EMSCRIPTEN)
set(_ImGui_TARGETS SDL2::SDL2)
endif()
imgui_backend(ImplSDLRenderer2
HEADERS imgui_impl_sdlrenderer2.h
SOURCES imgui_impl_sdlrenderer2.cpp
COMPILE_OPTIONS ${_ImGui_COMPILE_OPTIONS}
LINK_OPTIONS ${_ImGui_LINK_OPTIONS}
PACKAGES ${_ImGui_PACKAGES}
TARGETS ${_ImGui_TARGETS})
unset(_ImGui_COMPILE_OPTIONS)
unset(_ImGui_LINK_OPTIONS)
unset(_ImGui_PACKAGES)
unset(_ImGui_TARGETS)
imgui_backend(ImplSDL3
HEADERS imgui_impl_sdl3.h
SOURCES imgui_impl_sdl3.cpp
PACKAGES SDL3
TARGETS SDL3::SDL3)
imgui_backend(ImplSDLRenderer3
HEADERS imgui_impl_sdlrenderer3.h
SOURCES imgui_impl_sdlrenderer3.cpp
PACKAGES SDL3
TARGETS SDL3::SDL3)
if(EMSCRIPTEN)
set(_ImGui_COMPILE_OPTIONS "SHELL:-s USE_GLFW=3")
set(_ImGui_LINK_OPTIONS ${_ImGui_COMPILE_OPTIONS})
else()
set(_ImGui_PACKAGES glfw3)
set(_ImGui_TARGETS glfw)
endif()
imgui_backend(ImplGlfw
HEADERS imgui_impl_glfw.h
SOURCES imgui_impl_glfw.cpp
COMPILE_OPTIONS ${_ImGui_COMPILE_OPTIONS}
LINK_OPTIONS ${_ImGui_LINK_OPTIONS}
PACKAGES ${_ImGui_PACKAGES}
TARGETS ${_ImGui_TARGETS})
unset(_ImGui_COMPILE_OPTIONS)
unset(_ImGui_LINK_OPTIONS)
unset(_ImGui_PACKAGES)
unset(_ImGui_TARGETS)
imgui_backend(ImplOpenGL2
HEADERS imgui_impl_opengl2.h
SOURCES imgui_impl_opengl2.cpp
PACKAGES OpenGL
TARGETS OpenGL::GL)
if("${ImGui_OPENGL_LOADER}" STREQUAL "GL3W")
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GL3W=1")
set(_ImGui_PACKAGES gl3w)
set(_ImGui_TARGETS gl3w)
elseif("${ImGui_OPENGL_LOADER}" STREQUAL "GLEW")
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GLEW=1")
set(_ImGui_PACKAGES GLEW)
set(_ImGui_TARGETS GLEW::GLEW)
elseif("${ImGui_OPENGL_LOADER}" STREQUAL "GLAD")
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_GLAD=1")
set(_ImGui_PACKAGES glad)
set(_ImGui_TARGETS glad::glad)
elseif("${ImGui_OPENGL_LOADER}" STREQUAL "CUSTOM")
set(_ImGui_DEFINITIONS "IMGUI_IMPL_OPENGL_LOADER_CUSTOM=1")
set(_ImGui_PACKAGES)
set(_ImGui_TARGETS)
endif()
if(EMSCRIPTEN)
set(_ImGui_PACKAGES)
set(_ImGui_TARGETS)
else()
list(APPEND _ImGui_PACKAGES OpenGL)
list(APPEND _ImGui_TARGETS OpenGL::GL)
endif()
imgui_backend(ImplOpenGL3
HEADERS
imgui_impl_opengl3.h
imgui_impl_opengl3_loader.h
SOURCES imgui_impl_opengl3.cpp
DEFINITIONS ${_ImGui_DEFINITIONS}
PACKAGES ${_ImGui_PACKAGES}
TARGETS ${_ImGui_TARGETS})
unset(_ImGui_DEFINITIONS)
unset(_ImGui_PACKAGES)
unset(_ImGui_TARGETS)
imgui_backend(ImplVulkan
HEADERS imgui_impl_vulkan.h
SOURCES imgui_impl_vulkan.cpp
PACKAGES Vulkan
TARGETS Vulkan::Vulkan)
imgui_misc(FreeType freetype
HEADERS imgui_freetype.h
SOURCES imgui_freetype.cpp
PACKAGES Freetype
TARGETS Freetype::Freetype)
imgui_misc(StdLib cpp
HEADERS imgui_stdlib.h
SOURCES imgui_stdlib.cpp)
imgui_tool(BinaryToCompressedC
OUTPUT_NAME binary_to_compressed_c
SOURCES misc/fonts/binary_to_compressed_c.cpp)