11cmake_minimum_required (VERSION 3.20 )
2-
32project (ImGuiFileDialog)
43
5- add_library (ImGuiFileDialog STATIC
4+ # Option to control installation (disabled by default if used as subproject)
5+ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
6+ set (IGFD_INSTALL_DEFAULT ON )
7+ else ()
8+ set (IGFD_INSTALL_DEFAULT OFF )
9+ endif ()
10+
11+ option (IGFD_INSTALL "Install ImGuiFileDialog library and headers" ${IGFD_INSTALL_DEFAULT} )
12+
13+ find_package (imgui QUIET ) # fails quietly if not found (imgui is the target name for vcpkg and nixpkgs).
14+
15+ add_library (ImGuiFileDialog
616 ImGuiFileDialog.cpp
717 ImGuiFileDialog.h
818 ImGuiFileDialogConfig.h
919)
1020
11- target_include_directories (ImGuiFileDialog PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
21+ if (imgui_FOUND)
22+ target_link_libraries (ImGuiFileDialog PUBLIC imgui::imgui )
23+ message (STATUS "ImGuiFileDialog: Found imgui package, linking automatically" )
24+ else ()
25+ message (STATUS "ImGuiFileDialog: imgui package not found - ensure ImGui is available in your project" )
26+ endif ()
27+
28+ # Use generator expressions for proper include directory handling
29+ target_include_directories (ImGuiFileDialog
30+ PUBLIC
31+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} >
32+ $<INSTALL_INTERFACE :include >
33+ )
1234
1335if (UNIX )
1436 target_compile_options (ImGuiFileDialog PUBLIC -Wno-unknown-pragmas )
1537endif ()
38+
39+ # Installation configuration
40+ if (IGFD_INSTALL)
41+ include (GNUInstallDirs )
42+
43+ # Install the library
44+ install (TARGETS ImGuiFileDialog
45+ EXPORT ImGuiFileDialogTargets
46+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
47+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
48+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
49+ )
50+
51+ # Install headers
52+ install (FILES
53+ ImGuiFileDialog.h
54+ ImGuiFileDialogConfig.h
55+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
56+ )
57+
58+ # Install export targets
59+ install (EXPORT ImGuiFileDialogTargets
60+ FILE ImGuiFileDialogConfig.cmake
61+ NAMESPACE ImGuiFileDialog::
62+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/ImGuiFileDialog
63+ )
64+ endif ()
0 commit comments