0
0
Files
build/CMakeLists.txt

107 lines
3.3 KiB
CMake
Raw Normal View History

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