84 lines
2.1 KiB
CMake
84 lines
2.1 KiB
CMake
# FindImgui.cmake
|
|
# Finds ImGui library and sets up compilation
|
|
#
|
|
# This module defines:
|
|
# Imgui_FOUND - System has ImGui
|
|
# Imgui_INCLUDE_DIRS - ImGui include directories
|
|
# Imgui_SOURCES - ImGui source files to compile
|
|
# Imgui::Imgui - Imported target for ImGui
|
|
|
|
# Find ImGui directory
|
|
find_path(Imgui_DIR
|
|
NAMES imgui.h
|
|
PATHS
|
|
${IMGUI_DIR}
|
|
${CMAKE_SOURCE_DIR}/third_party/imgui-1.92.7
|
|
${CMAKE_SOURCE_DIR}/third_party/imgui
|
|
DOC "ImGui root directory"
|
|
)
|
|
|
|
if(Imgui_DIR)
|
|
set(Imgui_INCLUDE_DIRS
|
|
${Imgui_DIR}
|
|
${Imgui_DIR}/backends
|
|
)
|
|
|
|
# Core ImGui source files
|
|
set(Imgui_SOURCES
|
|
${Imgui_DIR}/imgui.cpp
|
|
${Imgui_DIR}/imgui_draw.cpp
|
|
${Imgui_DIR}/imgui_tables.cpp
|
|
${Imgui_DIR}/imgui_widgets.cpp
|
|
${Imgui_DIR}/imgui_demo.cpp
|
|
)
|
|
|
|
# Backend source files for Win32 + OpenGL3
|
|
list(APPEND Imgui_SOURCES
|
|
${Imgui_DIR}/backends/imgui_impl_win32.cpp
|
|
${Imgui_DIR}/backends/imgui_impl_opengl3.cpp
|
|
)
|
|
|
|
set(Imgui_FOUND TRUE)
|
|
endif()
|
|
|
|
# Handle standard find_package arguments
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Imgui
|
|
REQUIRED_VARS
|
|
Imgui_DIR
|
|
Imgui_INCLUDE_DIRS
|
|
Imgui_SOURCES
|
|
)
|
|
|
|
if(Imgui_FOUND)
|
|
# Create imported target
|
|
if(NOT TARGET Imgui::Imgui)
|
|
# Create the actual library target first
|
|
add_library(imgui_lib STATIC ${Imgui_SOURCES})
|
|
target_include_directories(imgui_lib PUBLIC ${Imgui_INCLUDE_DIRS})
|
|
|
|
# Link against Windows libraries for Win32 backend and OpenGL
|
|
target_link_libraries(imgui_lib PUBLIC
|
|
opengl32
|
|
gdi32
|
|
dwmapi
|
|
imm32
|
|
)
|
|
|
|
# Enable docking support
|
|
# target_compile_definitions(imgui_lib PUBLIC IMGUI_HAS_DOCK)
|
|
|
|
# Set C++ standard
|
|
target_compile_features(imgui_lib PUBLIC cxx_std_17)
|
|
|
|
# Create an alias with the :: namespace
|
|
add_library(Imgui::Imgui ALIAS imgui_lib)
|
|
endif()
|
|
|
|
message(STATUS "Found ImGui: ${Imgui_DIR}")
|
|
endif()
|
|
|
|
mark_as_advanced(
|
|
Imgui_DIR
|
|
)
|