cmake_minimum_required(VERSION 3.20) project(cthulhu_wine_access LANGUAGES C CXX) include(GNUInstallDirs) find_package(PkgConfig REQUIRED) pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) find_program(WIDL_EXECUTABLE widl REQUIRED) set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") set(generated_header "${generated_dir}/nvdaController.h") set(generated_server "${generated_dir}/nvdaController_s.c") file(MAKE_DIRECTORY "${generated_dir}") add_custom_command( OUTPUT "${generated_header}" "${generated_server}" COMMAND "${WIDL_EXECUTABLE}" --win64 -h -H "${generated_header}" -s -S "${generated_server}" "${CMAKE_CURRENT_SOURCE_DIR}/nvdaController.idl" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/nvdaController.idl" VERBATIM) add_executable(cthulhu-wine-access main.cpp "${generated_server}") target_compile_features(cthulhu-wine-access PRIVATE cxx_std_20) target_include_directories(cthulhu-wine-access PRIVATE "${generated_dir}") target_link_libraries(cthulhu-wine-access PRIVATE PkgConfig::GIO oleacc ole32 oleaut32 rpcrt4 user32) target_link_options(cthulhu-wine-access PRIVATE -mwindows) target_compile_options(cthulhu-wine-access PRIVATE $<$:-Wall -Wextra>) install(TARGETS cthulhu-wine-access RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")