76 lines
1.9 KiB
CMake
76 lines
1.9 KiB
CMake
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(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}
|
|
${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
|
|
)
|