cmake_minimum_required(VERSION 3.10) project(HP-Socket LANGUAGES C CXX) # 设置编译选项 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_BUILD_TYPE Debug) # 发布模式(可选 Debug) # 定义源码目录和头文件目录 set(HP_SOCKET_SRC_DIR ${PROJECT_SOURCE_DIR}/src) set(HP_SOCKET_INC_DIR ${PROJECT_SOURCE_DIR}/include) # 收集所有源文件(根据实际源码结构调整) file(GLOB HP_SOCKET_SOURCES ${HP_SOCKET_SRC_DIR}/*.c ${HP_SOCKET_SRC_DIR}/*.cpp ${HP_SOCKET_SRC_DIR}/linux/*.c ${HP_SOCKET_SRC_DIR}/linux/*.c ${HP_SOCKET_SRC_DIR}/common/*.cpp ${HP_SOCKET_SRC_DIR}/common/http/*.c ${HP_SOCKET_SRC_DIR}/common/kcp/*.c ${PROJECT_SOURCE_DIR}/global/*.cpp ) # 收集头文件(用于 IDE 索引) file(GLOB HP_SOCKET_HEADERS ${HP_SOCKET_INC_DIR}/*.h ${HP_SOCKET_INC_DIR}/*.hpp ) # 包含头文件目录 include_directories(${HP_SOCKET_INC_DIR}) include_directories(${HP_SOCKET_SRC_DIR}) include_directories(${HP_SOCKET_SRC_DIR}/linux) # Linux 平台相关头文件 include_directories(${PROJECT_SOURCE_DIR}/global) # 定义库目标(动态库:SHARED,静态库:STATIC) add_library(hp-socket SHARED ${HP_SOCKET_SOURCES} ${HP_SOCKET_HEADERS}) # 链接系统库(Linux 需链接 pthread 和 rt) target_link_libraries(hp-socket PRIVATE pthread rt) add_executable(client ${PROJECT_SOURCE_DIR}/client/client.cpp) target_link_libraries(client PRIVATE pthread rt) target_link_libraries(client PRIVATE hp-socket) add_executable(server ${PROJECT_SOURCE_DIR}/server/server.cpp) target_link_libraries(server PRIVATE pthread rt) target_link_libraries(server PRIVATE hp-socket) # 可选:若启用 SSL,链接 OpenSSL # find_package(OpenSSL REQUIRED) # target_link_libraries(hp-socket PRIVATE OpenSSL::SSL OpenSSL::Crypto)