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