cmake_minimum_required(VERSION 3.10) project(autogui-cpp VERSION 1.0.0 LANGUAGES CXX) # 基础配置 set(CMAKE_CXX_STANDARD 17) # Cpp17 set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # 创建库目标 add_library(autogui-cpp STATIC src/Keyboard.cpp src/Mouse.cpp src/Utils.cpp src/Autogui.cpp ) # 设置头文件搜索路径 # 使用生成器表达式支持add_subdirectory和install两种使用方式 target_include_directories(autogui-cpp PUBLIC $ $ ) # 平台特定配置 # macOS平台 if(APPLE) # 查找并链接ApplicationServices框架 # 该框架包含CoreGraphics和Carbon相关API find_library(APPLICATIONSERVICES_LIBRARY ApplicationServices REQUIRED) target_link_libraries(autogui-cpp PUBLIC ${APPLICATIONSERVICES_LIBRARY}) # Windows平台 elseif(WIN32) # 链接User32.lib (提供SendInput, GetCursorPos等API) target_link_libraries(autogui-cpp PUBLIC User32) # Linux/Unix平台 elseif(UNIX AND NOT APPLE) # Linux需要X11后端(Wayland尚未支持) find_package(X11 REQUIRED) # 查找Xtst库(XTest扩展) find_library(X11_Xtst_LIB Xtst) if(NOT X11_Xtst_LIB) message(FATAL_ERROR "Xtst library not found. Install libxtst-dev.") endif() # 查找Xext库(X扩展) find_library(X11_Xext_LIB Xext) if(NOT X11_Xext_LIB) message(FATAL_ERROR "Xext library not found.") endif() # 查找XRandR库(Xrandr扩展) find_library(X11_Xrandr_LIB Xrandr) if(NOT X11_Xrandr_LIB) message(FATAL_ERROR "XRandR library not found. Install libxrandr-dev.") endif() # 链接所有必需的X11库 target_link_libraries(autogui-cpp PUBLIC ${X11_LIBRARIES} ${X11_Xtst_LIB} ${X11_Xext_LIB} ${X11_Xrandr_LIB} ) target_include_directories(autogui-cpp PUBLIC ${X11_INCLUDE_DIR}) endif() # 集成方式: add_subdirectory # 在你的项目CMakeLists.txt中: # add_subdirectory(autogui-cpp) # target_link_libraries(your_target PRIVATE autogui-cpp)