更新:1、使用VS code+cmake重新编译,编译器保持不变;

2、修复若干逻辑bug,具体参考BUG_FIX_REPORT.md

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-08-18 11:26:19 +08:00
parent 60ad5c136f
commit 01d28e0d28
49 changed files with 1452 additions and 957 deletions
+100
View File
@@ -0,0 +1,100 @@
cmake_minimum_required(VERSION 3.10)
# 雷达数据处理动态链接库
# 开发环境已由 Qt/qmake 迁移到 VS Code + CMake。
# 编译器保持为 Microsoft Visual C++ Compiler 12.0 (x86)。
project(data_process_class_dll LANGUAGES CXX)
# 扫描模式:
# PHASE_SCANNING -> 相扫雷达(X256_PS,原 Qt 工程默认激活配置)
# MECHANICAL_SCANNING -> 机扫雷达(X256_MS
# 用法:cmake -S . -B build -DRADAR_SCAN_MODE=PHASE_SCANNING
set(RADAR_SCAN_MODE "PHASE_SCANNING" CACHE STRING "Radar scan mode (PHASE_SCANNING or MECHANICAL_SCANNING)")
set_property(CACHE RADAR_SCAN_MODE PROPERTY STRINGS PHASE_SCANNING MECHANICAL_SCANNING)
if(NOT RADAR_SCAN_MODE STREQUAL "PHASE_SCANNING" AND NOT RADAR_SCAN_MODE STREQUAL "MECHANICAL_SCANNING")
message(FATAL_ERROR "RADAR_SCAN_MODE 必须为 PHASE_SCANNING 或 MECHANICAL_SCANNING,当前值:${RADAR_SCAN_MODE}")
endif()
# 导出编译命令,便于 VS Code C/C++ 插件 IntelliSense 使用。
# Visual Studio 生成器不支持该选项,因此仅对 Makefile/Ninja 生成器开启。
if(NOT CMAKE_GENERATOR MATCHES "Visual Studio")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
set(SOURCES
data_process_class_dll/data_process_class_dll.cpp
data_process_class_dll/data_process.cpp
data_process_class_dll/dot_coh.cpp
data_process_class_dll/kalman.cpp
data_process_class_dll/coor_trans.cpp
data_process_class_dll/track_asso.cpp
data_process_class_dll/track_init.cpp
data_process_class_dll/track_index_mangement.cpp
data_process_class_dll/tas_ctrl.cpp
data_process_class_dll/track_die.cpp
data_process_class_dll/dot_coh_tas.cpp
data_process_class_dll/track_asso_tas.cpp
data_process_class_dll/track_init_direct_tracking.cpp
data_process_class_dll/track_die_tas.cpp
)
set(PUBLIC_HEADERS
data_process_class_dll/data_process_class_dll.h
data_process_class_dll/data_process_class_dll_global.h
)
add_library(data_process_class_dll SHARED ${SOURCES})
# 编译 DLL 时定义导出宏;引用 DLL 的工程不应定义该宏。
target_compile_definitions(data_process_class_dll PRIVATE
DATA_PROCESS_CLASS_DLL_LIBRARY
${RADAR_SCAN_MODE}
)
# 与 qmake 工程保持一致的 Windows 编译定义
if(WIN32)
target_compile_definitions(data_process_class_dll PRIVATE
WIN32
_WINDOWS
_UNICODE
UNICODE
NOMINMAX
)
endif()
# Eigen 头文件位于源码目录下(<Eigen/Dense>)。
target_include_directories(data_process_class_dll PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/data_process_class_dll
)
# 原工程使用 MSVC 2013Visual Studio 12)编译器;保持兼容,不强制更高 C++ 标准。
# 源码使用 C++11 特性(nullptr、类内成员初始化等),MSVC 2013 默认即可支持。
if(MSVC)
# 与原 qmake 生成的编译选项保持一致。
# 注意:MSVC 2013 的 Debug 运行库与 /Zc:strictStrings 同时使用会触发 STL 编译错误,
# 原 qmake 工程也仅在 Release 配置中使用该选项。
target_compile_options(data_process_class_dll PRIVATE
/Zc:wchar_t
/FS
$<$<CONFIG:Release>:/Zc:strictStrings>
)
endif()
# 输出目录:build/bin 下为 DLL/PDBbuild/lib 下为导入库。
set_target_properties(data_process_class_dll PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
PUBLIC_HEADER "${PUBLIC_HEADERS}"
)
# 安装规则:DLL/导入库 -> bin/lib,公开头文件 -> include。
include(GNUInstallDirs)
install(TARGETS data_process_class_dll
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)