Files
radar_data_process/CMakeLists.txt
T
2026-09-07 14:29:24 +08:00

108 lines
4.2 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>
)
# 修复 C4819(源文件含当前代码页无法表示的字符)。
# /utf-8 从 VS2015 Update 2 开始支持;本工程使用 MSVC 2013 时无该选项,
# 通过为源码文件添加 UTF-8 BOM 解决 C4819,这里仅对支持 /utf-8 的新版 MSVC 开启。
if(MSVC_VERSION GREATER_EQUAL 1900)
target_compile_options(data_process_class_dll PRIVATE /utf-8)
endif()
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}
)