cmake_minimum_required(VERSION 3.21)
project(Lyapunov VERSION 0.1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(Qt6 6.4 REQUIRED COMPONENTS Widgets Network)
if(BUILD_TESTING OR NOT DEFINED BUILD_TESTING)
    find_package(Qt6 6.4 REQUIRED COMPONENTS Test)
endif()
# WIN32: a windowed program, so shortcuts open no console window.
qt_add_executable(lyapunov-desktop WIN32 desktop/main.cpp)
if(WIN32)
    target_sources(lyapunov-desktop PRIVATE desktop/lyapunov.rc)
endif()
target_link_libraries(lyapunov-desktop PRIVATE Qt6::Widgets Qt6::Network)
target_compile_definitions(lyapunov-desktop PRIVATE LYAPUNOV_VERSION="${PROJECT_VERSION}")
install(TARGETS lyapunov-desktop RUNTIME DESTINATION bin)
include(CTest)
if(BUILD_TESTING)
    qt_add_executable(lyapunov-cardstack-test tests/cardstack.cpp)
    target_link_libraries(lyapunov-cardstack-test PRIVATE Qt6::Widgets Qt6::Test)
    add_test(NAME card-stack COMMAND lyapunov-cardstack-test)
    set_tests_properties(card-stack PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen;LYAPUNOV_REDUCED_MOTION=1")
endif()
