cmake_minimum_required(VERSION 3.16) project(cognitive_agent_can_read_trans LANGUAGES CXX) find_package(Python3 REQUIRED COMPONENTS Interpreter) set(CAN_PROTOCOL_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/../../config/can_protocol/semantic_protocol.json") set(CAN_PROTOCOL_GENERATOR "${CMAKE_CURRENT_SOURCE_DIR}/../generate_can_semantic_protocol.py") set(CAN_PROTOCOL_CPP "${CMAKE_CURRENT_SOURCE_DIR}/generated/can_semantic_protocol.hpp") set(CAN_PROTOCOL_PYTHON "${CMAKE_CURRENT_SOURCE_DIR}/../../src/cognitive_agent/generated/can_semantic_protocol.py") add_custom_command( OUTPUT "${CAN_PROTOCOL_CPP}" "${CAN_PROTOCOL_PYTHON}" COMMAND "${Python3_EXECUTABLE}" "${CAN_PROTOCOL_GENERATOR}" DEPENDS "${CAN_PROTOCOL_SOURCE}" "${CAN_PROTOCOL_GENERATOR}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.." COMMENT "Generating shared CAN semantic protocol views" VERBATIM ) add_custom_target(generate_can_semantic_protocol DEPENDS "${CAN_PROTOCOL_CPP}" "${CAN_PROTOCOL_PYTHON}") set(CANFD_ROOT "/home/orin/project511/project-code/canfd" CACHE PATH "Directory containing can_read_trans.cpp, zcan.h and libusbcanfd.so") foreach(required_file can_read_trans.cpp zcan.h libusbcanfd.so) if(NOT EXISTS "${CANFD_ROOT}/${required_file}") message(FATAL_ERROR "Missing ${CANFD_ROOT}/${required_file}") endif() endforeach() add_executable(can_read_trans main.cpp) add_dependencies(can_read_trans generate_can_semantic_protocol) target_compile_features(can_read_trans PRIVATE cxx_std_17) # The vendor zcan.h intentionally contains an anonymous packed structure. # Keep useful warnings without treating that SDK ABI declaration as our error. target_compile_options(can_read_trans PRIVATE -Wall -Wextra) target_compile_definitions(can_read_trans PRIVATE CANFD_LEGACY_SOURCE="${CANFD_ROOT}/can_read_trans.cpp" CANFD_PROJECT_DIR="${CANFD_ROOT}" ) target_include_directories(can_read_trans PRIVATE "${CANFD_ROOT}") target_link_libraries(can_read_trans PRIVATE "${CANFD_ROOT}/libusbcanfd.so" pthread ) set_target_properties(can_read_trans PROPERTIES BUILD_RPATH "${CANFD_ROOT}" INSTALL_RPATH "${CANFD_ROOT}" ) enable_testing() add_test(NAME can_read_trans_self_test COMMAND can_read_trans self-test) add_test(NAME can_read_trans_console_help COMMAND can_read_trans console --help) set_tests_properties(can_read_trans_console_help PROPERTIES PASS_REGULAR_EXPRESSION "console.*--execute" )