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 "==============================================") |