cmake_minimum_required(VERSION 3.21) project(CoopAllTheThings VERSION 0.0.1 DESCRIPTION "Steam Remote Play Together for any XInput game" LANGUAGES CXX) if(NOT WIN32) message(FATAL_ERROR "CoopAllTheThings targets Windows only.") endif() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # Single output dir keeps the donor-launch / inject workflow simple: host exe and # hook dll land next to each other under /bin (already in .gitignore). set(COOP_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/bin/$") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${COOP_OUTPUT_DIR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${COOP_OUTPUT_DIR}") if(MSVC) add_compile_options(/W4 /permissive- /Zc:__cplusplus /utf-8 /MP) add_compile_definitions(UNICODE _UNICODE WIN32_LEAN_AND_MEAN NOMINMAX) endif() add_subdirectory(third_party) add_subdirectory(common) add_subdirectory(host) # The injected hook DLL pulls in SafetyHook (+ Zydis). It is built in Phase 1; # enable once the dependency is wired so Phase 0 stays minimal. option(COOP_BUILD_HOOK "Build the injected game-side hook DLL" OFF) if(COOP_BUILD_HOOK) add_subdirectory(hook) endif()