Skip to content

Commit 995e728

Browse files
committed
adjusted cmake for install option and quiet imgui linking
1 parent f41ca48 commit 995e728

1 file changed

Lines changed: 40 additions & 20 deletions

File tree

CMakeLists.txt

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
cmake_minimum_required(VERSION 3.20)
22
project(ImGuiFileDialog)
33

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+
415
add_library(ImGuiFileDialog STATIC
516
ImGuiFileDialog.cpp
617
ImGuiFileDialog.h
718
ImGuiFileDialogConfig.h
819
)
920

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+
1028
# Use generator expressions for proper include directory handling
1129
target_include_directories(ImGuiFileDialog
1230
PUBLIC
@@ -19,25 +37,27 @@ if(UNIX)
1937
endif()
2038

2139
# Installation configuration
22-
include(GNUInstallDirs)
23-
24-
# Install the library
25-
install(TARGETS ImGuiFileDialog
26-
EXPORT ImGuiFileDialogTargets
27-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
28-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
29-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
30-
)
40+
if(IGFD_INSTALL)
41+
include(GNUInstallDirs)
3142

32-
# Install headers
33-
install(FILES
34-
ImGuiFileDialog.h
35-
ImGuiFileDialogConfig.h
36-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
37-
)
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+
)
3857

39-
# Install export targets
40-
install(EXPORT ImGuiFileDialogTargets
41-
FILE ImGuiFileDialogConfig.cmake
42-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ImGuiFileDialog
43-
)
58+
# Install export targets
59+
install(EXPORT ImGuiFileDialogTargets
60+
FILE ImGuiFileDialogConfig.cmake
61+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ImGuiFileDialog
62+
)
63+
endif()

0 commit comments

Comments
 (0)