first commit
This commit is contained in:
64
CMakeLists.txt
Normal file
64
CMakeLists.txt
Normal 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}
|
||||
)
|
||||
Reference in New Issue
Block a user