cmake_minimum_required(VERSION 3.19) project(soft_bus LANGUAGES CXX) # 设置C++标准 set(CMAKE_CXX_STANDARD 20) 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 static_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}/build/librocksdb.a") else() set(ROCKSDB_LIB "${ROCKSDB_LIB_DIR}/librocksdb.a") 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) if(WIN32) target_link_libraries(soft_bus PRIVATE shlwapi rpcrt4 ws2_32 # Winsock 库 advapi32 # 高级服务库 user32 # 用户界面库 gdi32 # 图形设备接口 ole32 # OLE 库 oleaut32 # OLE 自动化 uuid # UUID 支持 ) else() # 查找 zlib 库 find_package(ZLIB REQUIRED) # 在链接库时加入 zlib 库 if(ZLIB_FOUND) target_link_libraries(soft_bus PRIVATE ${ZLIB_LIBRARIES}) endif() endif() # 添加包含路径 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})