107 lines
3.3 KiB
CMake
107 lines
3.3 KiB
CMake
|
|
cmake_minimum_required(VERSION 3.10)
|
|||
|
|
project(hardware_simulator)
|
|||
|
|
|
|||
|
|
set(CMAKE_CXX_STANDARD 17)
|
|||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||
|
|
|
|||
|
|
# 设置构建类型
|
|||
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|||
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
# 编译器标志
|
|||
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
|
|||
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
|
|||
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
|
|||
|
|
|
|||
|
|
# 查找spdlog
|
|||
|
|
find_package(spdlog REQUIRED)
|
|||
|
|
|
|||
|
|
# 查找线程库
|
|||
|
|
find_package(Threads REQUIRED)
|
|||
|
|
|
|||
|
|
# 设置动力学库路径(直接指定,避免find_package失败)
|
|||
|
|
set(libdynamics_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dlx_to_nlg)
|
|||
|
|
set(libdynamics_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/dlx_to_nlg/libdynamics.so)
|
|||
|
|
|
|||
|
|
# 检查动力学库是否存在
|
|||
|
|
if(NOT EXISTS ${libdynamics_LIBRARY})
|
|||
|
|
message(WARNING "动态库文件未找到: ${libdynamics_LIBRARY}")
|
|||
|
|
# 尝试查找静态库
|
|||
|
|
set(libdynamics_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/dlx_to_nlg/libdynamics.a)
|
|||
|
|
if(NOT EXISTS ${libdynamics_LIBRARY})
|
|||
|
|
message(FATAL_ERROR "找不到动力学库文件,请在dlx_to_nlg目录下放置libdynamics.so或libdynamics.a")
|
|||
|
|
endif()
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
message(STATUS "动力学库头文件目录: ${libdynamics_INCLUDE_DIR}")
|
|||
|
|
message(STATUS "动力学库文件: ${libdynamics_LIBRARY}")
|
|||
|
|
|
|||
|
|
# 设置包含目录
|
|||
|
|
include_directories(
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/include
|
|||
|
|
${libdynamics_INCLUDE_DIR}
|
|||
|
|
${spdlog_INCLUDE_DIR}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 收集所有源文件
|
|||
|
|
set(PROJ_SOURCES
|
|||
|
|
# 主程序
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/control/control.cpp
|
|||
|
|
|
|||
|
|
# lib目录下的源文件
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/GNCFunction.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/libconvert.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/liblog.cpp
|
|||
|
|
|
|||
|
|
# sensor/source目录下的所有源文件
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/orbit_info.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_gnss.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_gyro.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_mems.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_optical.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_star.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_thrust.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_tx2.cpp
|
|||
|
|
${CMAKE_CURRENT_SOURCE_DIR}/sensor/source/sensor_wheel.cpp
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 获取源文件数量
|
|||
|
|
list(LENGTH PROJ_SOURCES PROJ_SOURCES_COUNT)
|
|||
|
|
|
|||
|
|
# 创建可执行文件
|
|||
|
|
add_executable(hardware_simulator ${PROJ_SOURCES})
|
|||
|
|
|
|||
|
|
# 设置目标属性
|
|||
|
|
target_compile_features(hardware_simulator PRIVATE cxx_std_17)
|
|||
|
|
|
|||
|
|
# 链接库
|
|||
|
|
target_link_libraries(hardware_simulator
|
|||
|
|
PRIVATE
|
|||
|
|
${libdynamics_LIBRARY}
|
|||
|
|
spdlog::spdlog
|
|||
|
|
Threads::Threads
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# Linux系统添加额外的库
|
|||
|
|
if(UNIX AND NOT APPLE)
|
|||
|
|
target_link_libraries(hardware_simulator
|
|||
|
|
PRIVATE
|
|||
|
|
-lrt
|
|||
|
|
-lpthread
|
|||
|
|
-lm
|
|||
|
|
)
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
# 安装配置(可选)
|
|||
|
|
# install(TARGETS hardware_simulator
|
|||
|
|
# DESTINATION bin
|
|||
|
|
# )
|
|||
|
|
|
|||
|
|
message(STATUS "==============================================")
|
|||
|
|
message(STATUS "硬件仿真系统配置完成")
|
|||
|
|
message(STATUS "项目名称: ${PROJECT_NAME}")
|
|||
|
|
message(STATUS "构建类型: ${CMAKE_BUILD_TYPE}")
|
|||
|
|
message(STATUS "源文件数量: ${PROJ_SOURCES_COUNT}")
|
|||
|
|
message(STATUS "==============================================")
|