first commit

This commit is contained in:
bing
2026-04-03 11:38:40 +08:00
commit b704b006c1
6 changed files with 336 additions and 0 deletions

64
CMakeLists.txt Normal file
View File

@@ -0,0 +1,64 @@
cmake_minimum_required(VERSION 3.15)
project(xrabbitmqclient CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Boost REQUIRED)
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
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
)
# 🌟 修复项:隐藏底层依赖,使用 Conan 声明的准确目标名(小写)
target_link_libraries(${PROJECT_NAME} PRIVATE simpleamqpclient::simpleamqpclient boost::boost)
# 添加导出宏
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}
)