Files

65 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.28)
project(immich-sync VERSION 0.1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_AUTOMOC ON)
find_package(Qt6 6.9 REQUIRED COMPONENTS Core Network HttpServer WebSockets)
qt_add_executable(immich-sync
src/main.cpp
src/Application.cpp
src/Application.h
src/ImmichClient.cpp
src/ImmichClient.h
src/SyncSession.cpp
src/SyncSession.h
src/Types.cpp
src/Types.h
)
qt_add_resources(immich-sync "webapp"
PREFIX "/web"
FILES
web/index.html
web/app.js
web/styles.css
)
target_link_libraries(immich-sync PRIVATE
Qt6::Core
Qt6::Network
Qt6::HttpServer
Qt6::WebSockets
)
target_compile_definitions(immich-sync PRIVATE
IMMICH_SYNC_VERSION="${PROJECT_VERSION}"
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
)
target_compile_options(immich-sync PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra -Wpedantic -Wconversion -Wshadow>
)
include(GNUInstallDirs)
install(TARGETS immich-sync RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
include(CTest)
if(BUILD_TESTING)
find_package(Qt6 6.9 REQUIRED COMPONENTS Test)
qt_add_executable(immich-sync-tests
tests/TypesTest.cpp
src/Types.cpp
src/Types.h
)
target_include_directories(immich-sync-tests PRIVATE src)
target_link_libraries(immich-sync-tests PRIVATE Qt6::Core Qt6::Network Qt6::Test)
target_compile_definitions(immich-sync-tests PRIVATE QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII)
add_test(NAME immich-sync-types COMMAND immich-sync-tests)
endif()