Files
2026-08-26 20:11:09 +08:00

61 lines
2.4 KiB
CMake

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