65 lines
1.6 KiB
CMake
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()
|