cmake_minimum_required(VERSION 3.15) project(ghost_macos) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # macOS deployment target set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum macOS version") # Universal Binary (Intel + Apple Silicon) set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "Build architectures") include_directories(../) include_directories(../client) include_directories(../compress) # Source files set(SOURCES main.mm ../client/Buffer.cpp ../client/IOCPClient.cpp ScreenHandler.mm InputHandler.mm SystemManager.mm Permissions.mm H264Encoder.mm ) # Create executable add_executable(ghost ${SOURCES}) # Include directories target_include_directories(ghost PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) # Find and link macOS frameworks find_library(COCOA_FRAMEWORK Cocoa REQUIRED) find_library(COREGRAPHICS_FRAMEWORK CoreGraphics REQUIRED) find_library(IOKIT_FRAMEWORK IOKit REQUIRED) find_library(IOSURFACE_FRAMEWORK IOSurface REQUIRED) find_library(APPLICATIONSERVICES_FRAMEWORK ApplicationServices REQUIRED) find_library(SECURITY_FRAMEWORK Security REQUIRED) find_library(CARBON_FRAMEWORK Carbon REQUIRED) find_library(VIDEOTOOLBOX_FRAMEWORK VideoToolbox REQUIRED) find_library(COREMEDIA_FRAMEWORK CoreMedia REQUIRED) find_library(COREVIDEO_FRAMEWORK CoreVideo REQUIRED) find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED) find_library(ICONV_LIBRARY iconv REQUIRED) target_link_libraries(ghost PRIVATE ${COCOA_FRAMEWORK} ${COREGRAPHICS_FRAMEWORK} ${IOKIT_FRAMEWORK} ${IOSURFACE_FRAMEWORK} ${APPLICATIONSERVICES_FRAMEWORK} ${SECURITY_FRAMEWORK} ${CARBON_FRAMEWORK} ${VIDEOTOOLBOX_FRAMEWORK} ${COREMEDIA_FRAMEWORK} ${COREVIDEO_FRAMEWORK} ${ACCELERATE_FRAMEWORK} ${ICONV_LIBRARY} "${CMAKE_SOURCE_DIR}/lib/libzstd.a" ) # Compiler flags target_compile_options(ghost PRIVATE -Wall -Wextra -fobjc-arc ) # Output directory set_target_properties(ghost PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )