78 lines
2.1 KiB
CMake
78 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(AGVPathTracking VERSION 1.0)
|
|
|
|
# 设置 C++ 标准
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# MSVC 编译器选项:使用 UTF-8 编码
|
|
if(MSVC)
|
|
add_compile_options(/utf-8)
|
|
endif()
|
|
|
|
# 包含目录
|
|
include_directories(${PROJECT_SOURCE_DIR}/include)
|
|
|
|
# 源文件
|
|
set(SOURCES
|
|
src/control/agv_model.cpp
|
|
src/control/path_curve.cpp
|
|
src/control/path_curve_custom.cpp
|
|
src/control/control_generator.cpp
|
|
src/control/path_tracker.cpp
|
|
)
|
|
|
|
# 创建库
|
|
add_library(agv_tracking ${SOURCES})
|
|
|
|
# 示例程序
|
|
add_executable(agv_demo examples/demo.cpp)
|
|
target_link_libraries(agv_demo agv_tracking)
|
|
|
|
# 数据生成程序
|
|
add_executable(generate_data examples/generate_data.cpp)
|
|
target_link_libraries(generate_data agv_tracking)
|
|
|
|
# 平滑路径生成程序
|
|
add_executable(generate_smooth_path examples/generate_smooth_path.cpp)
|
|
target_link_libraries(generate_smooth_path agv_tracking)
|
|
|
|
# 控制台GUI演示程序
|
|
add_executable(agv_gui examples/gui_demo.cpp)
|
|
target_link_libraries(agv_gui agv_tracking)
|
|
|
|
# ==================== Curtis 电机控制器示例程序 ====================
|
|
|
|
# Curtis 键盘控制演示
|
|
add_executable(curtis_demo
|
|
examples/curtis_demo.cpp
|
|
src/control/can/CurtisMotorController.cpp
|
|
)
|
|
target_link_libraries(curtis_demo ${CMAKE_SOURCE_DIR}/lib/ControlCAN.lib)
|
|
|
|
# Curtis 路径跟踪演示
|
|
add_executable(curtis_path_tracking_demo
|
|
examples/curtis_path_tracking_demo.cpp
|
|
src/control/can/CurtisMotorController.cpp
|
|
)
|
|
target_link_libraries(curtis_path_tracking_demo agv_tracking ${CMAKE_SOURCE_DIR}/lib/ControlCAN.lib)
|
|
|
|
# Qt 图形界面GUI
|
|
find_package(Qt6 COMPONENTS Widgets REQUIRED)
|
|
if(Qt6_FOUND)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
add_executable(agv_qt_gui examples/qt_gui_demo.cpp)
|
|
target_link_libraries(agv_qt_gui agv_tracking Qt6::Widgets)
|
|
|
|
message(STATUS "Qt6 found - Building Qt GUI application")
|
|
else()
|
|
message(WARNING "Qt6 not found - Qt GUI application will not be built")
|
|
endif()
|
|
|
|
# 安装规则
|
|
install(TARGETS agv_tracking DESTINATION lib)
|
|
install(DIRECTORY include/ DESTINATION include)
|