cmake_minimum_required(VERSION 3.15) project(xrabbitmqclient CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(simpleamqpclient CONFIG REQUIRED) # 使用 generate_export_header(${PROJECT_NAME}) 时: # - CMake 会自动生成一个头文件,其中包含导出宏 # - 宏名称是 项目名称的大写形式 + _EXPORT 后缀 include(GenerateExportHeader) # --------------------------------------------------------- # 2. 编译封装层为独立库 # --------------------------------------------------------- add_library(${PROJECT_NAME} include/RabbitMQClient.h src/RabbitMQClient.cpp ) generate_export_header(${PROJECT_NAME} EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/include/XRabbitMQClient_export.h ) # 🌟 新增修复:强制 MSVC 使用 UTF-8 编码编译,彻底消灭 C4819 和乱码导致的玄学报错 if(MSVC) target_compile_options(${PROJECT_NAME} PRIVATE /utf-8) endif() # 设置头文件搜索路径 target_include_directories(${PROJECT_NAME} PUBLIC $ $ $ ) target_link_libraries(${PROJECT_NAME} PRIVATE simpleamqpclient::simpleamqpclient) # 添加导出宏 target_compile_definitions(${PROJECT_NAME} PRIVATE XRABBITMQCLIENT_LIBRARY) # --------------------------------------------------------- # 3. 安装规则 (供 Conan 打包提取使用) # --------------------------------------------------------- include(GNUInstallDirs) # 安装生成的库文件 install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # Windows 下的 .dll ) # 安装暴露给业务层的头文件 (注意:千万不要把 RabbitMQClient.cpp 安装出去) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/IMessageQueue.h ${CMAKE_CURRENT_SOURCE_DIR}/include/RabbitMQClient.h ${CMAKE_BINARY_DIR}/include/XRabbitMQClient_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) # --------------------------------------------------------- # 4. 单元测试 (Unit Tests) # --------------------------------------------------------- if(BUILD_TESTING) enable_testing() add_subdirectory(test) endif()