From 7535bb51ce5e27943c3b4788f41751ba5aac443c Mon Sep 17 00:00:00 2001 From: Daniel Dada Date: Tue, 9 Dec 2025 15:03:46 +0300 Subject: [PATCH] split cmakelists --- CMakeLists.txt | 263 +++------------------------------------ cmake/Dependencies.cmake | 67 ++++++++++ cmake/ImGui.cmake | 32 +++++ cmake/Install.cmake | 39 ++++++ cmake/Packaging.cmake | 41 ++++++ src/cli/CMakeLists.txt | 8 ++ src/core/CMakeLists.txt | 21 ++++ src/gui/CMakeLists.txt | 41 ++++++ 8 files changed, 265 insertions(+), 247 deletions(-) create mode 100644 cmake/Dependencies.cmake create mode 100644 cmake/ImGui.cmake create mode 100644 cmake/Install.cmake create mode 100644 cmake/Packaging.cmake create mode 100644 src/cli/CMakeLists.txt create mode 100644 src/core/CMakeLists.txt create mode 100644 src/gui/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 28e946d..765b69f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,15 +2,17 @@ cmake_minimum_required(VERSION 3.25) project(clrsync VERSION 0.1.3 LANGUAGES CXX) include(GNUInstallDirs) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + option(USE_SYSTEM_GLFW "Use system-installed GLFW instead of fetching it statically" OFF) message(STATUS "USE_SYSTEM_GLFW: ${USE_SYSTEM_GLFW}") -# ----------------------------- -# Platform-specific install dirs -# ----------------------------- if(WIN32) set(CMAKE_INSTALL_PREFIX "C:/Program Files/clrsync") set(CMAKE_INSTALL_BINDIR "bin") @@ -19,17 +21,11 @@ if(WIN32) set(CMAKE_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}") endif() -# ----------------------------- -# RPATH settings -# ----------------------------- set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") -# ----------------------------- -# Templates -# ----------------------------- configure_file( ${CMAKE_SOURCE_DIR}/src/core/version.hpp.in ${CMAKE_SOURCE_DIR}/src/core/version.hpp @@ -42,246 +38,19 @@ configure_file( @ONLY ) -# ----------------------------- -# Find packages -# ----------------------------- -find_package(OpenGL REQUIRED) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +include(Dependencies) +include(ImGui) -if(WIN32) - include(FetchContent) +add_subdirectory(src/core) +add_subdirectory(src/cli) +add_subdirectory(src/gui) - FetchContent_Declare( - freetype - URL https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz - ) - FetchContent_MakeAvailable(freetype) -else() - find_package(Freetype REQUIRED) - find_package(PkgConfig REQUIRED) - find_package(Fontconfig REQUIRED) - find_package(ZLIB REQUIRED) - find_package(BZip2 REQUIRED) - find_package(PNG REQUIRED) - - find_library(BROTLIDEC_LIBRARY NAMES brotlidec) - find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon) - - pkg_check_modules(HARFBUZZ harfbuzz) - pkg_check_modules(WAYLAND_CLIENT wayland-client) - pkg_check_modules(WAYLAND_EGL wayland-egl) - -endif() - - -if(USE_SYSTEM_GLFW) - pkg_check_modules(GLFW REQUIRED glfw3) -else() - include(FetchContent) - FetchContent_Declare( - glfw - GIT_REPOSITORY https://github.com/glfw/glfw.git - GIT_TAG 3.4 - ) - set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) - set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) - set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) - set(GLFW_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) - set(GLFW_INSTALL OFF CACHE BOOL "" FORCE) - - FetchContent_MakeAvailable(glfw) - set(GLFW_FOUND TRUE) - set(GLFW_INCLUDE_DIRS ${glfw_SOURCE_DIR}/include) - set(GLFW_LIBRARIES glfw) -endif() - -# ----------------------------- -# Extra libraries for Freetype -# ----------------------------- -set(FREETYPE_EXTRA_LIBS "") -if(BROTLIDEC_LIBRARY AND BROTLICOMMON_LIBRARY) - list(APPEND FREETYPE_EXTRA_LIBS ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY}) - message(STATUS "Found Brotli libraries") -endif() - -if(HARFBUZZ_FOUND) - list(APPEND FREETYPE_EXTRA_LIBS ${HARFBUZZ_LIBRARIES}) - message(STATUS "Found HarfBuzz") -endif() - -# ----------------------------- -# Wayland -# ----------------------------- -set(WAYLAND_LIBS "") -if(WAYLAND_CLIENT_FOUND) - list(APPEND WAYLAND_LIBS ${WAYLAND_CLIENT_LIBRARIES}) - message(STATUS "Found Wayland client") -endif() -if(WAYLAND_EGL_FOUND) - list(APPEND WAYLAND_LIBS ${WAYLAND_EGL_LIBRARIES}) - message(STATUS "Found Wayland EGL") -endif() - -# ----------------------------- -# Core -# ----------------------------- -set(CORE_SOURCES - src/core/palette/color.cpp - src/core/io/toml_file.cpp - src/core/config/config.cpp - src/core/utils.cpp - src/core/version.cpp - src/core/theme/theme_template.cpp -) - -set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -add_library(clrsync_core SHARED ${CORE_SOURCES}) -target_include_directories(clrsync_core PUBLIC src SYSTEM lib) -target_compile_definitions(clrsync_core PUBLIC - CLRSYNC_DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}/clrsync\" -) - -# ----------------------------- -# CLI -# ----------------------------- -add_executable(clrsync_cli src/cli/main.cpp) -target_include_directories(clrsync_cli PRIVATE src SYSTEM lib) -target_link_libraries(clrsync_cli PRIVATE clrsync_core) - -# ----------------------------- -# GUI -# ----------------------------- -set(GUI_SOURCES - src/gui/main.cpp - src/gui/color_scheme_editor.cpp - src/gui/template_editor.cpp - src/gui/palette_controller.cpp - src/gui/template_controller.cpp - lib/color_text_edit/TextEditor.cpp - src/gui/imgui_helpers.cpp - src/gui/imgui_helpers.hpp - src/gui/about_window.cpp - src/gui/settings_window.cpp - src/gui/font_loader.cpp -) - -add_executable(clrsync_gui ${GUI_SOURCES}) -target_include_directories(clrsync_gui PRIVATE src SYSTEM lib) - -# imgui -set(IMGUI_SOURCE_DIR lib/imgui) -add_library(imgui STATIC - ${IMGUI_SOURCE_DIR}/imgui.cpp - ${IMGUI_SOURCE_DIR}/imgui_draw.cpp - ${IMGUI_SOURCE_DIR}/imgui_widgets.cpp - ${IMGUI_SOURCE_DIR}/imgui_tables.cpp - ${IMGUI_SOURCE_DIR}/backends/imgui_impl_glfw.cpp - ${IMGUI_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp - ${IMGUI_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp -) -target_include_directories(imgui PUBLIC SYSTEM - ${IMGUI_SOURCE_DIR} - ${IMGUI_SOURCE_DIR}/backends -) -target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE) - -if(WIN32) - target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${freetype_SOURCE_DIR}/include) - target_link_libraries(imgui PUBLIC freetype) - target_link_libraries(clrsync_gui PRIVATE clrsync_core glfw imgui OpenGL::GL) -else() - target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS}) - target_link_libraries(imgui PRIVATE Freetype::Freetype Freetype::Freetype ${FREETYPE_EXTRA_LIBS} - ZLIB::ZLIB BZip2::BZip2 PNG::PNG) - target_link_libraries(clrsync_gui PRIVATE - clrsync_core imgui - ${GLFW_LIBRARIES} ${WAYLAND_LIBS} - X11 Xrandr Xi Fontconfig::Fontconfig OpenGL::GL - ) -endif() - -# ----------------------------- -# Installation -# ----------------------------- -install(TARGETS clrsync_core - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT Core -) -install(TARGETS clrsync_cli - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT CLI -) -install(TARGETS clrsync_gui - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT GUI -) - -install(FILES example_config/config.toml - DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync - COMPONENT Core -) -install(DIRECTORY example_config/templates - DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync - COMPONENT Core - FILES_MATCHING PATTERN "*" -) -install(DIRECTORY example_config/palettes - DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync - COMPONENT Core - FILES_MATCHING PATTERN "*.toml" -) - -if(UNIX AND NOT APPLE) - install(FILES resources/clrsync.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications - COMPONENT Core - ) -endif() - -# ----------------------------- -# CPack configuration -# ----------------------------- -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") -set(CPACK_PACKAGE_NAME "clrsync") -set(CPACK_PACKAGE_VENDOR "Daniel Dada") -set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Color scheme manager") -set(CPACK_GENERATOR "NSIS;DEB;RPM") - -# Components -set(CPACK_COMPONENTS_ALL Core GUI CLI) -set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Core Library") -set(CPACK_COMPONENT_CORE_DESCRIPTION "clrsync core library and default configs (required)") -set(CPACK_COMPONENT_CORE_REQUIRED ON) -set(CPACK_COMPONENT_GUI_DISPLAY_NAME "GUI Application") -set(CPACK_COMPONENT_GUI_DESCRIPTION "clrsync GUI app") -set(CPACK_COMPONENT_GUI_DEPENDS Core) -set(CPACK_COMPONENT_CLI_DISPLAY_NAME "Command Line Tool") -set(CPACK_COMPONENT_CLI_DESCRIPTION "clrsync CLI app") -set(CPACK_COMPONENT_CLI_DEPENDS Core) - -# NSIS -set(CPACK_NSIS_INSTALLED_NAME "clrsync") -set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") -set(CPACK_NSIS_MODIFY_PATH ON) -set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) -set(CPACK_NSIS_MENU_LINKS "bin/clrsync_gui.exe" "clrsync") -set(CPACK_NSIS_CREATE_DESKTOP_LINKS "bin/clrsync_gui.exe;clrsync") - -# Debian -set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Dada ") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.31), libglfw3, libfreetype6") -set(CPACK_DEBIAN_PACKAGE_SECTION "utils") -set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") -set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") - -# RPM -set(CPACK_RPM_PACKAGE_LICENSE "MIT") -set(CPACK_RPM_PACKAGE_GROUP "Applications/System") -set(CPACK_RPM_PACKAGE_URL "https://github.com/obsqrbtz/clrsync") -set(CPACK_RPM_PACKAGE_REQUIRES "freetype, glfw, fontconfig") - -include(CPack) +include(Install) +include(Packaging) + +message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") +message(STATUS "CMAKE_INSTALL_FULL_DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}") message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") message(STATUS "CMAKE_INSTALL_FULL_DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}") diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake new file mode 100644 index 0000000..cc95572 --- /dev/null +++ b/cmake/Dependencies.cmake @@ -0,0 +1,67 @@ +find_package(OpenGL REQUIRED) + +if(WIN32) + include(FetchContent) + + FetchContent_Declare( + freetype + URL https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz + ) + FetchContent_MakeAvailable(freetype) +else() + find_package(Freetype REQUIRED) + find_package(PkgConfig REQUIRED) + find_package(Fontconfig REQUIRED) + find_package(ZLIB REQUIRED) + find_package(BZip2 REQUIRED) + find_package(PNG REQUIRED) + + find_library(BROTLIDEC_LIBRARY NAMES brotlidec) + find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon) + + pkg_check_modules(HARFBUZZ harfbuzz) + pkg_check_modules(WAYLAND_CLIENT wayland-client) + pkg_check_modules(WAYLAND_EGL wayland-egl) +endif() + +if(USE_SYSTEM_GLFW) + pkg_check_modules(GLFW REQUIRED glfw3) +else() + include(FetchContent) + FetchContent_Declare( + glfw + GIT_REPOSITORY https://github.com/glfw/glfw.git + GIT_TAG 3.4 + ) + set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) + set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) + set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) + set(GLFW_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) + set(GLFW_INSTALL OFF CACHE BOOL "" FORCE) + + FetchContent_MakeAvailable(glfw) + set(GLFW_FOUND TRUE) + set(GLFW_INCLUDE_DIRS ${glfw_SOURCE_DIR}/include) + set(GLFW_LIBRARIES glfw) +endif() + +set(FREETYPE_EXTRA_LIBS "") +if(BROTLIDEC_LIBRARY AND BROTLICOMMON_LIBRARY) + list(APPEND FREETYPE_EXTRA_LIBS ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY}) + message(STATUS "Found Brotli libraries") +endif() + +if(HARFBUZZ_FOUND) + list(APPEND FREETYPE_EXTRA_LIBS ${HARFBUZZ_LIBRARIES}) + message(STATUS "Found HarfBuzz") +endif() + +set(WAYLAND_LIBS "") +if(WAYLAND_CLIENT_FOUND) + list(APPEND WAYLAND_LIBS ${WAYLAND_CLIENT_LIBRARIES}) + message(STATUS "Found Wayland client") +endif() +if(WAYLAND_EGL_FOUND) + list(APPEND WAYLAND_LIBS ${WAYLAND_EGL_LIBRARIES}) + message(STATUS "Found Wayland EGL") +endif() diff --git a/cmake/ImGui.cmake b/cmake/ImGui.cmake new file mode 100644 index 0000000..11c4581 --- /dev/null +++ b/cmake/ImGui.cmake @@ -0,0 +1,32 @@ +set(IMGUI_SOURCE_DIR ${CMAKE_SOURCE_DIR}/lib/imgui) + +add_library(imgui STATIC + ${IMGUI_SOURCE_DIR}/imgui.cpp + ${IMGUI_SOURCE_DIR}/imgui_draw.cpp + ${IMGUI_SOURCE_DIR}/imgui_widgets.cpp + ${IMGUI_SOURCE_DIR}/imgui_tables.cpp + ${IMGUI_SOURCE_DIR}/backends/imgui_impl_glfw.cpp + ${IMGUI_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp + ${IMGUI_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp +) + +target_include_directories(imgui PUBLIC SYSTEM + ${IMGUI_SOURCE_DIR} + ${IMGUI_SOURCE_DIR}/backends +) + +target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE) + +if(WIN32) + target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${freetype_SOURCE_DIR}/include) + target_link_libraries(imgui PUBLIC freetype) +else() + target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS}) + target_link_libraries(imgui PRIVATE + Freetype::Freetype + ${FREETYPE_EXTRA_LIBS} + ZLIB::ZLIB + BZip2::BZip2 + PNG::PNG + ) +endif() diff --git a/cmake/Install.cmake b/cmake/Install.cmake new file mode 100644 index 0000000..75f6074 --- /dev/null +++ b/cmake/Install.cmake @@ -0,0 +1,39 @@ +install(TARGETS clrsync_core + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT Core +) + +install(TARGETS clrsync_cli + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT CLI +) + +install(TARGETS clrsync_gui + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT GUI +) + +install(FILES example_config/config.toml + DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync + COMPONENT Core +) + +install(DIRECTORY example_config/templates + DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync + COMPONENT Core + FILES_MATCHING PATTERN "*" +) + +install(DIRECTORY example_config/palettes + DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync + COMPONENT Core + FILES_MATCHING PATTERN "*.toml" +) + +if(UNIX AND NOT APPLE) + install(FILES resources/clrsync.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications + COMPONENT Core + ) +endif() diff --git a/cmake/Packaging.cmake b/cmake/Packaging.cmake new file mode 100644 index 0000000..3aba090 --- /dev/null +++ b/cmake/Packaging.cmake @@ -0,0 +1,41 @@ +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") +set(CPACK_PACKAGE_NAME "clrsync") +set(CPACK_PACKAGE_VENDOR "Daniel Dada") +set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Color scheme manager") +set(CPACK_GENERATOR "NSIS;DEB;RPM") + +# Components +set(CPACK_COMPONENTS_ALL Core GUI CLI) +set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Core Library") +set(CPACK_COMPONENT_CORE_DESCRIPTION "clrsync core library and default configs (required)") +set(CPACK_COMPONENT_CORE_REQUIRED ON) +set(CPACK_COMPONENT_GUI_DISPLAY_NAME "GUI Application") +set(CPACK_COMPONENT_GUI_DESCRIPTION "clrsync GUI app") +set(CPACK_COMPONENT_GUI_DEPENDS Core) +set(CPACK_COMPONENT_CLI_DISPLAY_NAME "Command Line Tool") +set(CPACK_COMPONENT_CLI_DESCRIPTION "clrsync CLI app") +set(CPACK_COMPONENT_CLI_DEPENDS Core) + +# NSIS +set(CPACK_NSIS_INSTALLED_NAME "clrsync") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") +set(CPACK_NSIS_MODIFY_PATH ON) +set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) +set(CPACK_NSIS_MENU_LINKS "bin/clrsync_gui.exe" "clrsync") +set(CPACK_NSIS_CREATE_DESKTOP_LINKS "bin/clrsync_gui.exe;clrsync") + +# Debian +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Dada ") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.31), libglfw3, libfreetype6") +set(CPACK_DEBIAN_PACKAGE_SECTION "utils") +set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") + +# RPM +set(CPACK_RPM_PACKAGE_LICENSE "MIT") +set(CPACK_RPM_PACKAGE_GROUP "Applications/System") +set(CPACK_RPM_PACKAGE_URL "https://github.com/obsqrbtz/clrsync") +set(CPACK_RPM_PACKAGE_REQUIRES "freetype, glfw, fontconfig") + +include(CPack) diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt new file mode 100644 index 0000000..69cb845 --- /dev/null +++ b/src/cli/CMakeLists.txt @@ -0,0 +1,8 @@ +add_executable(clrsync_cli main.cpp) + +target_include_directories(clrsync_cli PRIVATE + ${CMAKE_SOURCE_DIR}/src + SYSTEM ${CMAKE_SOURCE_DIR}/lib +) + +target_link_libraries(clrsync_cli PRIVATE clrsync_core) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt new file mode 100644 index 0000000..657c284 --- /dev/null +++ b/src/core/CMakeLists.txt @@ -0,0 +1,21 @@ +set(CORE_SOURCES + palette/color.cpp + io/toml_file.cpp + config/config.cpp + utils.cpp + version.cpp + theme/theme_template.cpp +) + +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +add_library(clrsync_core SHARED ${CORE_SOURCES}) + +target_include_directories(clrsync_core PUBLIC + ${CMAKE_SOURCE_DIR}/src + SYSTEM ${CMAKE_SOURCE_DIR}/lib +) + +target_compile_definitions(clrsync_core PUBLIC + CLRSYNC_DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}/clrsync\" +) diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt new file mode 100644 index 0000000..6250be8 --- /dev/null +++ b/src/gui/CMakeLists.txt @@ -0,0 +1,41 @@ +set(GUI_SOURCES + main.cpp + color_scheme_editor.cpp + template_editor.cpp + palette_controller.cpp + template_controller.cpp + imgui_helpers.cpp + imgui_helpers.hpp + about_window.cpp + settings_window.cpp + font_loader.cpp + ${CMAKE_SOURCE_DIR}/lib/color_text_edit/TextEditor.cpp +) + +add_executable(clrsync_gui ${GUI_SOURCES}) + +target_include_directories(clrsync_gui PRIVATE + ${CMAKE_SOURCE_DIR}/src + SYSTEM ${CMAKE_SOURCE_DIR}/lib +) + +if(WIN32) + target_link_libraries(clrsync_gui PRIVATE + clrsync_core + glfw + imgui + OpenGL::GL + ) +else() + target_link_libraries(clrsync_gui PRIVATE + clrsync_core + imgui + ${GLFW_LIBRARIES} + ${WAYLAND_LIBS} + X11 + Xrandr + Xi + Fontconfig::Fontconfig + OpenGL::GL + ) +endif()