cmake_minimum_required(VERSION 3.9) project(imgui LANGUAGES CXX) set(MISC_DIR ${IMGUI_SRC_DIR}/misc) set(EXTRA_FONTS_DIR ${MISC_DIR}/fonts) set(IMGUI_EXPORT_HEADERS imgui_export_headers.h) file(GLOB SOURCE_FILES ${IMGUI_SRC_DIR}/*.cpp) file(GLOB HEADER_FILES ${IMGUI_SRC_DIR}/*.h) if(IMGUI_ENABLE_TEST_ENGINE) message(STATUS "Building ImGui with test engine") file(GLOB TEST_ENGINE_FILES ${IMGUI_TEST_ENGINE_DIR}/imgui_test_engine/*.cpp) list(APPEND SOURCE_FILES ${TEST_ENGINE_FILES}) file(GLOB TEST_ENGINE_HEADER_FILES ${IMGUI_TEST_ENGINE_DIR}/imgui_test_engine/*.h) list(APPEND HEADER_FILES ${TEST_ENGINE_HEADER_FILES}) else() message(STATUS "Building ImGui without test engine") endif() file(GLOB EXTRA_FONTS_FILES ${EXTRA_FONTS_DIR}/*.ttf) if (MSVC) file(GLOB EXTRA_NATVIS_FILES ${MISC_DIR}/natvis/*.natvis) endif() set(BINARY_TO_COMPRESSED_BIN binary_to_compressed_c) add_executable(${BINARY_TO_COMPRESSED_BIN} ${EXTRA_FONTS_DIR}/binary_to_compressed_c.cpp) target_compile_features(${BINARY_TO_COMPRESSED_BIN} PRIVATE cxx_std_11) add_library(${PROJECT_NAME} ${SOURCE_FILES}) if(IMGUI_WITH_SDL3_BINDING) target_sources(${PROJECT_NAME} PRIVATE ${IMGUI_SRC_DIR}/backends/imgui_impl_sdl3.cpp) list(APPEND HEADER_FILES ${IMGUI_SRC_DIR}/backends/imgui_impl_sdl3.h) find_package(SDL3 REQUIRED CONFIG) target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3) endif() set_target_properties(${PROJECT_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON ) include(GenerateExportHeader) generate_export_header(${PROJECT_NAME} EXPORT_MACRO_NAME IMGUI_API EXPORT_FILE_NAME ${IMGUI_EXPORT_HEADERS} ) target_include_directories(${PROJECT_NAME} PUBLIC $ $ $ ) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) include(GNUInstallDirs) install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(TARGETS ${BINARY_TO_COMPRESSED_BIN} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES ${HEADER_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${IMGUI_EXPORT_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) install(FILES ${EXTRA_FONTS_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/res/fonts PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) if (MSVC) install(FILES ${EXTRA_NATVIS_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/res/natvis PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) endif()