cmake_minimum_required(VERSION 3.16) project(main) # Set C++ standard set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Find required packages find_package(PkgConfig REQUIRED) find_package(Threads REQUIRED) # Try to find PahoMqttC, fallback to manual linking if not found find_package(PahoMqttC QUIET) if(NOT PahoMqttC_FOUND) message(STATUS "PahoMqttC package not found, using manual library linking") find_library(PAHO_MQTT_C_LIBRARY NAMES paho-mqtt3c REQUIRED) find_path(PAHO_MQTT_C_INCLUDE_DIR NAMES MQTTClient.h REQUIRED) endif() find_package(unitree_sdk2 REQUIRED) message(STATUS "Found unitree_sdk2 in: ${unitree_sdk2_DIR}") # Include directories include_directories( include /usr/local/include/unitree/ ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/nlohmann $<$>:${PAHO_MQTT_C_INCLUDE_DIR}> ) # Source files set(SOURCES src/main.cpp src/controller.cpp src/custom_robot.cpp src/config.cpp src/logger.cpp src/mqtt.cpp src/navigation.cpp ) add_executable(main ${SOURCES}) target_include_directories(main PRIVATE /usr/local/include) # Link libraries target_link_libraries(main PRIVATE unitree_sdk2 Threads::Threads $<$:PahoMqttC::PahoMqttC> $<$>:${PAHO_MQTT_C_LIBRARY}> ) # Set output directory set_target_properties(main PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} ) # Install target install(TARGETS main RUNTIME DESTINATION bin )