- cmake_minimum_required(VERSION 3.16)
- project(AQTPackageMachinePlug LANGUAGES CXX)
-
- # 添加更多调试输出
- message(STATUS "Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}")
- message(STATUS "FastDDS lib dir: ${fastdds_DIR}")
- message(STATUS "FastCDR lib dir: ${fastcdr_DIR}")
-
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-
- find_package(Qt6 REQUIRED COMPONENTS Core Quick)
-
- # 添加 FastDDS 依赖
- if(NOT fastcdr_FOUND)
- find_package(fastcdr 2 REQUIRED)
- endif()
-
- if(NOT fastdds_FOUND)
- find_package(fastdds 3 REQUIRED)
- endif()
-
- # 查找所有 DDS 相关的源文件
- file(GLOB DDS_SOURCES
- "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
- "${CMAKE_CURRENT_SOURCE_DIR}/*.cxx"
- )
-
- # 查找所有头文件
- file(GLOB HEADER_FILES
- "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
- )
-
- # 创建插件库
- add_library(AQTPackageMachinePlug SHARED
- ${DDS_SOURCES}
- ${HEADER_FILES} # 包含所有头文件
- )
-
- # 定义导出宏
- target_compile_definitions(AQTPackageMachinePlug
- PRIVATE
- AQTPACKAGEMACHINEPLUG_LIBRARY
- QT_PLUGIN
- )
-
- # 添加包含目录
- target_include_directories(AQTPackageMachinePlug
- PRIVATE
- ${CMAKE_SOURCE_DIR}
- )
-
- target_include_directories(AQTPackageMachinePlug
- PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR} # 确保包含当前目录
- )
-
- target_link_libraries(AQTPackageMachinePlug
- PRIVATE
- Qt6::Core
- Qt6::Quick
- fastdds
- fastcdr
- )
-
- # 修改属性设置
- set_target_properties(AQTPackageMachinePlug PROPERTIES
- OUTPUT_NAME "AQTPackageMachinePlug"
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
- PREFIX ""
- SUFFIX ".so"
- POSITION_INDEPENDENT_CODE ON
- # RPATH 设置
- SKIP_BUILD_RPATH FALSE
- BUILD_WITH_INSTALL_RPATH FALSE
- INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib"
- INSTALL_RPATH_USE_LINK_PATH TRUE
- )
-
- # 添加运行时依赖路径
- if(UNIX AND NOT APPLE)
- set_target_properties(AQTPackageMachinePlug PROPERTIES
- INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib:/usr/local/lib"
- )
- endif()
-
- # 如果是调试版本,添加调试符号
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- target_compile_options(AQTPackageMachinePlug PRIVATE -g)
- endif()
-
- # 调试信息
- message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
- message(STATUS "Binary Dir: ${CMAKE_BINARY_DIR}")
- message(STATUS "Plugin Output Dir: ${CMAKE_BINARY_DIR}/bin")
-
- # 添加一个消息来验证设置
- message(STATUS "Plugin name will be: AQTPackageMachinePlug.so")
-
- # 修改安装配置
- install(TARGETS AQTPackageMachinePlug
- LIBRARY DESTINATION bin
- RUNTIME DESTINATION bin
- )
-
- # 确保导出符号
- if(WIN32)
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
- endif()
|