Skip to content

Commit 515a9ab

Browse files
committed
refactor: cmake
1 parent 820a9e1 commit 515a9ab

7 files changed

Lines changed: 91 additions & 54 deletions

File tree

gui/CMakeLists.txt

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ if (APPLE)
1414
enable_language (OBJCXX OBJC)
1515
endif ()
1616

17-
include ("${CMAKE_CURRENT_LIST_DIR}/icons/SVGtoPNG.cmake")
17+
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
1818

1919
add_subdirectory (libgui)
2020

@@ -24,30 +24,29 @@ target_compile_features (benbot_gui PRIVATE cxx_std_23)
2424

2525
target_link_libraries (benbot_gui PRIVATE ben_bot::libgui imgui::imgui)
2626

27-
set_target_properties (
28-
benbot_gui
29-
PROPERTIES
30-
MACOSX_BUNDLE_BUNDLE_NAME "BenBot GUI"
31-
MACOSX_BUNDLE_GUI_IDENTIFIER "com.benbot.gui"
32-
MACOSX_BUNDLE_INFO_STRING "Chess GUI"
33-
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
34-
MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}"
35-
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}"
36-
MACOSX_BUNDLE_COPYRIGHT
37-
"Written in 2026 by Ben Vining and released under the terms of the GNU Public License"
38-
)
39-
40-
include ("${CMAKE_CURRENT_LIST_DIR}/icons/MacOSIcon.cmake")
41-
include ("${CMAKE_CURRENT_LIST_DIR}/icons/WindowsIcon.cmake")
42-
4327
add_subdirectory (glfw_wrapper)
4428

4529
target_link_libraries (benbot_gui PRIVATE ben_bot::glfw_wrapper)
4630

4731
if (APPLE)
4832
message (VERBOSE "Using GLFW + Metal backend for ImGUI app")
4933

50-
target_sources (benbot_gui PRIVATE metal_main.mm "${imgui_backends_dir}/imgui_impl_metal.mm")
34+
set_target_properties (
35+
benbot_gui
36+
PROPERTIES
37+
MACOSX_BUNDLE_BUNDLE_NAME "BenBot GUI"
38+
MACOSX_BUNDLE_GUI_IDENTIFIER "com.benbot.gui"
39+
MACOSX_BUNDLE_INFO_STRING "Chess GUI"
40+
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
41+
MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}"
42+
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}"
43+
MACOSX_BUNDLE_COPYRIGHT
44+
"Written in 2026 by Ben Vining and released under the terms of the GNU Public License"
45+
)
46+
47+
include ("${CMAKE_CURRENT_LIST_DIR}/icons/MacOSIcon.cmake")
48+
49+
target_sources (benbot_gui PRIVATE metal_main.mm "${IMGUI_BACKENDS_DIR}/imgui_impl_metal.mm")
5150

5251
target_link_libraries (
5352
benbot_gui PRIVATE "-framework Metal" "-framework MetalKit" "-framework Cocoa"
@@ -57,13 +56,17 @@ if (APPLE)
5756
return ()
5857
endif ()
5958

59+
if (WIN32)
60+
include ("${CMAKE_CURRENT_LIST_DIR}/icons/WindowsIcon.cmake")
61+
endif ()
62+
6063
find_package (Vulkan OPTIONAL_COMPONENTS volk)
6164

6265
if (Vulkan_FOUND)
6366
message (VERBOSE "Using GLFW + Vulkan backend for ImGUI app")
6467

6568
target_sources (
66-
benbot_gui PRIVATE vulkan_main.cpp "${imgui_backends_dir}/imgui_impl_vulkan.cpp"
69+
benbot_gui PRIVATE vulkan_main.cpp "${IMGUI_BACKENDS_DIR}/imgui_impl_vulkan.cpp"
6770
)
6871

6972
target_link_libraries (benbot_gui PRIVATE Vulkan::Vulkan)

gui/cmake/Findimgui.cmake

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# ======================================================================================
2+
#
3+
# ░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░ ░▒▓███████▓▒░ ░▒▓██████▓▒░▒▓████████▓▒░
4+
# ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
5+
# ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
6+
# ░▒▓███████▓▒░░▒▓██████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
7+
# ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
8+
# ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
9+
# ░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓███████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░
10+
#
11+
# ======================================================================================
12+
13+
#[[
14+
This module sets up an imgui::imgui static library target and exports the IMGUI_BACKENDS_DIR variable.
15+
]]
16+
17+
if (TARGET imgui::imgui)
18+
set (imgui_FOUND TRUE)
19+
return ()
20+
endif ()
21+
22+
include (FetchContent)
23+
24+
FetchContent_Declare (
25+
imgui
26+
SYSTEM
27+
GIT_REPOSITORY "https://github.com/ocornut/imgui.git"
28+
GIT_TAG "v${imgui_FIND_VERSION}-docking"
29+
GIT_SHALLOW ON
30+
OVERRIDE_FIND_PACKAGE
31+
)
32+
33+
FetchContent_MakeAvailable (imgui)
34+
35+
set (imgui_misc_cpp_dir "${imgui_SOURCE_DIR}/misc/cpp")
36+
set (imgui_backends_dir "${imgui_SOURCE_DIR}/backends")
37+
38+
set (IMGUI_BACKENDS_DIR "${imgui_backends_dir}"
39+
CACHE INTERNAL "Directory containing the backend source files"
40+
)
41+
42+
# create our own target for imgui
43+
add_library (imgui STATIC)
44+
45+
target_sources (
46+
imgui
47+
PRIVATE "${imgui_SOURCE_DIR}/imgui.cpp" "${imgui_SOURCE_DIR}/imgui_draw.cpp"
48+
"${imgui_SOURCE_DIR}/imgui_tables.cpp" "${imgui_SOURCE_DIR}/imgui_widgets.cpp"
49+
"${imgui_misc_cpp_dir}/imgui_stdlib.cpp"
50+
)
51+
52+
target_include_directories (
53+
imgui PUBLIC "${imgui_SOURCE_DIR}" "${imgui_misc_cpp_dir}" "${imgui_backends_dir}"
54+
)
55+
56+
add_library (imgui::imgui ALIAS imgui)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
#
1111
# ======================================================================================
1212

13+
#[[
14+
This module provides the add_svg_to_png_command function, which uses inkscape.
15+
Before using add_svg_to_png_command() you should check ``if(INKSCAPE_PROGRAM)``.
16+
]]
17+
1318
include_guard (GLOBAL)
1419

1520
find_program (

gui/glfw_wrapper/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ FetchContent_Declare (
3333
FetchContent_MakeAvailable (glfw stb)
3434

3535
add_library (
36-
benbotgui_glfw_wrapper STATIC "${imgui_backends_dir}/imgui_impl_glfw.cpp" GLFW_Wrapper.cpp
36+
benbotgui_glfw_wrapper STATIC "${IMGUI_BACKENDS_DIR}/imgui_impl_glfw.cpp" GLFW_Wrapper.cpp
3737
)
3838

3939
target_link_libraries (

gui/icons/MacOSIcon.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ if (NOT APPLE)
1616
return ()
1717
endif ()
1818

19-
include ("${CMAKE_CURRENT_LIST_DIR}/SVGtoPNG.cmake")
19+
include (SVGtoPNG)
2020

2121
if (NOT INKSCAPE_PROGRAM)
2222
return ()

gui/libgui/CMakeLists.txt

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@
1010
#
1111
# ======================================================================================
1212

13-
FetchContent_Declare (
14-
imgui
15-
SYSTEM
16-
GIT_REPOSITORY "https://github.com/ocornut/imgui.git"
17-
GIT_TAG v1.92.6-docking
18-
GIT_SHALLOW ON
19-
FIND_PACKAGE_ARGS 1.92.6
20-
)
13+
add_subdirectory (resources)
14+
15+
find_package (imgui 1.92.6 REQUIRED)
2116

2217
FetchContent_Declare (
2318
nativefiledialog-extended
@@ -28,31 +23,7 @@ FetchContent_Declare (
2823
FIND_PACKAGE_ARGS 1.3.0
2924
)
3025

31-
FetchContent_MakeAvailable (imgui nativefiledialog-extended)
32-
33-
set (imgui_misc_cpp_dir "${imgui_SOURCE_DIR}/misc/cpp")
34-
set (imgui_backends_dir "${imgui_SOURCE_DIR}/backends")
35-
set (imgui_backends_dir "${imgui_backends_dir}" PARENT_SCOPE)
36-
37-
# create our own target for imgui
38-
add_library (imgui STATIC)
39-
40-
target_sources (
41-
imgui
42-
PRIVATE "${imgui_SOURCE_DIR}/imgui.cpp" "${imgui_SOURCE_DIR}/imgui_draw.cpp"
43-
"${imgui_SOURCE_DIR}/imgui_tables.cpp" "${imgui_SOURCE_DIR}/imgui_widgets.cpp"
44-
"${imgui_misc_cpp_dir}/imgui_stdlib.cpp"
45-
)
46-
47-
target_include_directories (
48-
imgui PUBLIC "${imgui_SOURCE_DIR}" "${imgui_misc_cpp_dir}" "${imgui_backends_dir}"
49-
)
50-
51-
add_library (imgui::imgui ALIAS imgui)
52-
53-
#
54-
55-
add_subdirectory (resources)
26+
FetchContent_MakeAvailable (nativefiledialog-extended)
5627

5728
add_library (libgui STATIC)
5829

gui/libgui/resources/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ file (GLOB_RECURSE resources LIST_DIRECTORIES false CONFIGURE_DEPENDS
1818
"${CMAKE_CURRENT_LIST_DIR}/res/*.svg"
1919
)
2020

21+
include (SVGtoPNG)
22+
2123
unset (icon_png)
2224

2325
if (INKSCAPE_PROGRAM)

0 commit comments

Comments
 (0)