更新:1、使用VS code+cmake重新编译,编译器保持不变;
2、修复若干逻辑bug,具体参考BUG_FIX_REPORT.md Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
+100
@@ -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 2013(Visual 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/PDB,build/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}
|
||||
)
|
||||
Reference in New Issue
Block a user