71 lines
5.5 KiB
CMake
71 lines
5.5 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(KSwitcher VERSION 0.6.22 LANGUAGES CXX RC)
|
|
if(NOT WIN32)
|
|
message(FATAL_ERROR "KSwitcher uses native Windows APIs")
|
|
endif()
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
add_library(kscore src/core.cpp src/platform.cpp src/autostart.cpp src/autocorrect.cpp src/storage.cpp src/ocr.cpp src/richtext.cpp src/update.cpp)
|
|
target_include_directories(kscore PUBLIC src PRIVATE vendor)
|
|
target_compile_definitions(kscore PUBLIC UNICODE _UNICODE WIN32_LEAN_AND_MEAN NOMINMAX _WIN32_WINNT=0x0A00)
|
|
target_link_libraries(kscore PUBLIC user32 shell32 shlwapi advapi32 crypt32 imm32 comctl32 gdi32 ole32 oleaut32 taskschd comdlg32 uuid windowscodecs runtimeobject uiautomationcore)
|
|
add_executable(KSwitcher WIN32 src/main.cpp src/app.cpp src/screenshot_notifications.cpp src/screenshot_launcher.cpp src/screenshot_activation.cpp src/configuration.cpp src/ui.cpp resources/app.rc)
|
|
target_compile_definitions(KSwitcher PRIVATE KS_RESIDENT_APP)
|
|
target_link_libraries(KSwitcher PRIVATE kscore)
|
|
add_executable(KSwitcherConfig WIN32 src/config_main.cpp src/configuration.cpp src/ui.cpp resources/app.rc)
|
|
set_target_properties(KSwitcherConfig PROPERTIES OUTPUT_NAME "KSwitcher.Config")
|
|
target_compile_definitions(KSwitcherConfig PRIVATE KS_CONFIG_APP)
|
|
target_link_libraries(KSwitcherConfig PRIVATE kscore)
|
|
add_executable(KSwitcherTests tests/tests.cpp)
|
|
add_executable(KSwitcherScrollTests tests/scroll.cpp)
|
|
target_link_libraries(KSwitcherScrollTests PRIVATE kscore)
|
|
target_link_libraries(KSwitcherTests PRIVATE kscore)
|
|
add_executable(KSwitcherIntegration tests/integration.cpp src/screenshot_launcher.cpp src/screenshot_activation.cpp src/app.cpp src/screenshot_notifications.cpp src/screenshot.cpp src/configuration.cpp src/ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcherIntegration PRIVATE kscore)
|
|
add_executable(KSwitcherInputTests tests/input.cpp src/screenshot_launcher.cpp src/screenshot_activation.cpp src/app.cpp src/screenshot_notifications.cpp src/screenshot.cpp src/configuration.cpp src/ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcherInputTests PRIVATE kscore)
|
|
target_compile_definitions(KSwitcherInputTests PRIVATE KS_SCREENSHOT_RESOURCES)
|
|
add_executable(KSwitcherScreenshotUITests tests/screenshot_ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcherScreenshotUITests PRIVATE kscore)
|
|
target_compile_definitions(KSwitcherScreenshotUITests PRIVATE KS_SCREENSHOT_RESOURCES)
|
|
add_executable(KSwitcherScreenshot WIN32 src/screenshot_main.cpp src/screenshot_notifications.cpp src/screenshot_activation.cpp src/screenshot.cpp resources/app.rc)
|
|
set_target_properties(KSwitcherScreenshot PROPERTIES OUTPUT_NAME "KSwitcher.Screenshot")
|
|
target_compile_definitions(KSwitcherScreenshot PRIVATE KS_SCREENSHOT_RESOURCES)
|
|
target_link_libraries(KSwitcherScreenshot PRIVATE kscore)
|
|
if(MSVC)
|
|
target_compile_options(KSwitcherScreenshotUITests PRIVATE /utf-8)
|
|
set_property(TARGET KSwitcherScreenshotUITests PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
else()
|
|
target_link_options(KSwitcherScreenshotUITests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
endif()
|
|
add_executable(KSwitcherOcrTests tests/ocr.cpp src/screenshot_launcher.cpp src/screenshot_activation.cpp src/app.cpp src/screenshot_notifications.cpp src/screenshot.cpp src/configuration.cpp src/ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcherOcrTests PRIVATE kscore)
|
|
if(MSVC)
|
|
set_property(TARGET kscore KSwitcher KSwitcherConfig KSwitcherScreenshot KSwitcherTests KSwitcherScrollTests KSwitcherIntegration KSwitcherInputTests KSwitcherOcrTests PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
target_compile_options(kscore PRIVATE /W4 /utf-8)
|
|
target_compile_options(KSwitcher PRIVATE /W4 /utf-8)
|
|
target_compile_options(KSwitcherConfig PRIVATE /W4 /utf-8)
|
|
target_compile_options(KSwitcherScreenshot PRIVATE /W4 /utf-8)
|
|
else()
|
|
target_link_options(KSwitcher PRIVATE -municode -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherConfig PRIVATE -municode -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherScreenshot PRIVATE -municode -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherTests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherScrollTests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherIntegration PRIVATE -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherInputTests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherOcrTests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
endif()
|
|
enable_testing()
|
|
add_test(NAME native-regressions COMMAND KSwitcherTests)
|
|
add_test(NAME scroll-regressions COMMAND KSwitcherScrollTests)
|
|
add_test(NAME input-regressions COMMAND KSwitcherInputTests)
|
|
add_test(NAME screenshot-ui-regressions COMMAND KSwitcherScreenshotUITests)
|
|
add_test(NAME updater-regressions COMMAND powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${CMAKE_CURRENT_SOURCE_DIR}/tests/update.ps1" -Executable "$<TARGET_FILE:KSwitcher>")
|
|
set_tests_properties(native-regressions PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
install(TARGETS KSwitcher KSwitcherConfig KSwitcherScreenshot RUNTIME DESTINATION .)
|
|
install(FILES LICENSE vendor/json-LICENSE.txt DESTINATION .)
|
|
|
|
add_custom_command(TARGET KSwitcher POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/dictionaries" "$<TARGET_FILE_DIR:KSwitcher>/dictionaries")
|
|
install(DIRECTORY dictionaries DESTINATION .)
|