65 lines
2.2 KiB
CMake
65 lines
2.2 KiB
CMake
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}
|
|
)
|