34 lines
2.0 KiB
CMake
34 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(KSwitcher VERSION 0.1.0 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/storage.cpp src/ocr.cpp src/richtext.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 advapi32 crypt32 imm32 comctl32 gdi32 ole32 oleaut32 taskschd comdlg32 uuid windowscodecs runtimeobject)
|
|
add_executable(KSwitcher WIN32 src/main.cpp src/app.cpp src/ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcher PRIVATE kscore)
|
|
add_executable(KSwitcherTests tests/tests.cpp)
|
|
target_link_libraries(KSwitcherTests PRIVATE kscore)
|
|
add_executable(KSwitcherIntegration tests/integration.cpp src/app.cpp src/ui.cpp resources/app.rc)
|
|
target_link_libraries(KSwitcherIntegration PRIVATE kscore)
|
|
add_executable(KSwitcherOcrTests tests/ocr.cpp)
|
|
target_link_libraries(KSwitcherOcrTests PRIVATE kscore)
|
|
if(MSVC)
|
|
set_property(TARGET kscore KSwitcher KSwitcherTests KSwitcherIntegration 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)
|
|
else()
|
|
target_link_options(KSwitcher PRIVATE -municode -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherTests PRIVATE -static -static-libgcc -static-libstdc++)
|
|
target_link_options(KSwitcherIntegration 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)
|
|
install(TARGETS KSwitcher RUNTIME DESTINATION .)
|
|
install(FILES LICENSE vendor/json-LICENSE.txt DESTINATION .)
|