0
0
Files
build/CMakeLists.txt

107 lines
3.3 KiB
CMake
Raw Permalink 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)
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 "==============================================")