cmake_minimum_required(VERSION 3.16) project(autocat_gnome) include(ExternalProject) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) #if(APPLE) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-coroutines-ts") #endif() #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -g -Og") if(APPLE) set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/opt/libsoup@2/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig") set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) set(OPENSSL_LIBRARIES /usr/local/opt/openssl/lib) endif() find_package(PkgConfig REQUIRED) find_package(nlohmann_json REQUIRED) find_package(concurrencpp REQUIRED) find_package(Threads REQUIRED) find_package(SQLite3 REQUIRED) find_package(fmt REQUIRED) pkg_check_modules(GTK REQUIRED gtk4) pkg_check_modules(GLIB REQUIRED glib-2.0) pkg_check_modules(LIBSOUP REQUIRED libsoup-2.4) pkg_check_modules(LIBADWAITA REQUIRED libadwaita-1) pkg_check_modules(LIBSIGCPP REQUIRED sigc++-3.0) include_directories(${GTK_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSOUP_INCLUDE_DIRS} ${LIBADWAITA_INCLUDE_DIRS} ${LIBSIGCPP_INCLUDE_DIRS}) link_directories(${GTK_LIBRARY_DIRS} ${GLIB_LIBRARY_DIRS} ${LIBSOUP_LIBRARY_DIRS} ${LIBADWAITA_LIBRARY_DIRS} ${LIBSIGCPP_LIBRARY_DIRS}) add_executable(autocat_gnome main.cpp gui/MainWindow.cpp gui/MainWindow.h gui/LoginWindow.cpp gui/LoginWindow.h services/Api.cpp services/Api.h models/User.cpp models/User.h services/Settings.cpp services/Settings.h coro/Coro.h coro/GLibMainContextExecutor.cpp coro/GLibMainContextExecutor.h gtkpp/Application.cpp gtkpp/Application.h gtkpp/Window.cpp gtkpp/Window.h gtkpp/Box.cpp gtkpp/Box.h gtkpp/Widget.cpp gtkpp/Widget.h gtkpp/Entry.cpp gtkpp/Entry.h gtkpp/Button.cpp gtkpp/Button.h gtkpp/Spinner.cpp gtkpp/Spinner.h gtkpp/HeaderBar.cpp gtkpp/HeaderBar.h gtkpp/MessageDialog.cpp gtkpp/MessageDialog.h gtkpp/Leaflet.cpp gtkpp/Leaflet.h gtkpp/Dialog.cpp gtkpp/Dialog.h gui/AddNumberDialog.cpp gui/AddNumberDialog.h gui/custom/PlateView.h gui/custom/PlateView.c App.cpp App.h models/Vehicle.cpp models/Vehicle.h services/Storage.cpp services/Storage.h models/Engine.cpp models/Engine.h services/IDBEntity.h models/JsonOptional.h services/IDBEntity.cpp gtkpp/ScrolledWindow.cpp gtkpp/ScrolledWindow.h gtkpp/ListView.cpp gtkpp/ListView.h gtkpp/SelectionModel.cpp gtkpp/SelectionModel.h gtkpp/ListItemFactory.cpp gtkpp/ListItemFactory.h models/VehiclesListFactory.cpp models/VehiclesListFactory.h gtkpp/Separator.cpp gtkpp/Separator.h) target_link_libraries(autocat_gnome ${GTK_LIBRARIES} ${GLIB_LIBRARIES} ${LIBSOUP_LIBRARIES} ${LIBADWAITA_LIBRARIES} ${LIBSIGCPP_LIBRARIES} nlohmann_json::nlohmann_json concurrencpp::concurrencpp Threads::Threads SQLite::SQLite3 fmt::fmt) set(XML gui/MainWindow.xml) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") include(GlibCompileResourcesSupport) compile_gresources(RESOURCE_FILE XML_OUT TYPE BUNDLE RESOURCES ${XML} COMPRESS_ALL) add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})