cmake_minimum_required(VERSION 3.10) project(server LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) file(CREATE_LINK "${CMAKE_BINARY_DIR}/compile_commands.json" "${CMAKE_SOURCE_DIR}/compile_commands.json" SYMBOLIC) endif() add_compile_definitions(HPSOCKET_STATIC_LIB YLIB_STATIC) file(GLOB_RECURSE SERVER_SOURCES CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/src/*.cpp" ) add_executable(${PROJECT_NAME} ${SERVER_SOURCES}) set(YLIB_ROOT "/usr/local" CACHE PATH "ylib 安装前缀") set(HPSOCKET_ROOT "/usr/local" CACHE PATH "HPSocket 头文件前缀") target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/.. ${YLIB_ROOT}/include ${HPSOCKET_ROOT}/include /usr/include ) if(MSVC) target_compile_options(${PROJECT_NAME} PRIVATE /W3 /wd4819) set(YLIB_LIB_DIR "${YLIB_ROOT}/lib" CACHE PATH "ylib 库目录") set(HPSOCKET_LIB_DIR "${CMAKE_SOURCE_DIR}/3rdparty/HP-Socket/Lib" CACHE PATH "HPSocket 库目录") target_link_directories(${PROJECT_NAME} PRIVATE ${YLIB_LIB_DIR} ${HPSOCKET_LIB_DIR}) target_link_libraries(${PROJECT_NAME} PRIVATE $<$:ylib_d> $<$:ylib> $<$:HPSocket_D> $<$:HPSocket> ws2_32 iphlpapi advapi32 user32 shell32 ) else() target_compile_options(${PROJECT_NAME} PRIVATE -Wall -fPIC) target_link_directories(${PROJECT_NAME} PRIVATE /usr/local/lib /usr/lib/x86_64-linux-gnu ) if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(_YLIB_NAME ylib_d) else() set(_YLIB_NAME ylib) endif() target_link_libraries(${PROJECT_NAME} PRIVATE ${_YLIB_NAME} hpsocket mysqlcppconn hiredis curl ssl crypto pthread dl rt z ) endif()