cmake_minimum_required(VERSION 3.19) project(soft_bus LANGUAGES CXX) # 设置C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOMOC ON) # 查找Qt6 find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets SerialPort Charts) find_package(Qt6 REQUIRED COMPONENTS Widgets) # 检测编译平台 if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") set(PlatformDir "x86") else() set(PlatformDir "x64") endif() # 设置RocksDB路径 SET(ROCKSDB_DIR "${PROJECT_SOURCE_DIR}/rocksdb") # 添加RocksDB构建目标 add_custom_target(BUILD_ROCKSDB COMMAND make -j2 shared_lib -C ${ROCKSDB_DIR} COMMENT "Building RocksDB" WORKING_DIRECTORY ${ROCKSDB_DIR} ) # 设置RocksDB包含目录 include_directories(${ROCKSDB_DIR}/include) # 设置RocksDB库路径 set(ROCKSDB_LIB_DIR "${ROCKSDB_DIR}") if(WIN32) set(ROCKSDB_LIB "${ROCKSDB_LIB_DIR}/rocksdb.lib") else() set(ROCKSDB_LIB "${ROCKSDB_LIB_DIR}/librocksdb.so") endif() # 设置ADS路径 SET(ADS_DIR "${PROJECT_SOURCE_DIR}/advanced_dock_system") # 关键修改:添加ADS子目录 add_subdirectory(${ADS_DIR}/src) # 添加Qt项目设置 qt_standard_project_setup() # 添加可执行文件 qt_add_executable(soft_bus WIN32 MACOSX_BUNDLE main.cpp src/soft_bus_core/soft_bus_core.cpp src/soft_bus_core/soft_bus_core.h src/serial_manager/serial_manager.h src/serial_manager/serial_manager.cpp mainwindow.h mainwindow.cpp src/bus_tree/bus_tree.h src/bus_tree/bus_tree.cpp src/bus_tree/bus_tree.ui src/toolbar/toolbar.h src/toolbar/toolbar.cpp resource.qrc src/view_core/viewcore.h src/view_core/viewcore.cpp src/view_core/viewcore.ui src/view_serial/viewserial.h src/view_serial/viewserial.cpp src/view_serial/viewserial.ui src/view_serial/serialtree.ui src/my_dock_manager/mdockmanager.cpp src/my_dock_manager/mdockmanager.h ) # 添加对RocksDB构建的依赖 add_dependencies(soft_bus BUILD_ROCKSDB) # 关键修改:链接ADS库(使用目标名称) if(Qt6_VERSION_MAJOR EQUAL 6) target_link_libraries(soft_bus PRIVATE ads::qtadvanceddocking-qt6) else() target_link_libraries(soft_bus PRIVATE ads::qtadvanceddocking-qt5) endif() # 链接其他库 target_link_libraries(soft_bus PRIVATE Qt6::Core Qt6::Widgets Qt6::SerialPort Qt6::Charts ${ROCKSDB_LIB} ) target_link_libraries(soft_bus PRIVATE Qt6::Widgets) # 添加包含路径 target_include_directories(soft_bus PRIVATE ${ROCKSDB_DIR}/include ${PROJECT_SOURCE_DIR}/src ${ADS_DIR}/src # ADS头文件路径 ) # 安装配置 include(GNUInstallDirs) install(TARGETS soft_bus BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) qt_generate_deploy_app_script( TARGET soft_bus OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) install(SCRIPT ${deploy_script})