Add synchronous and streaming MotorService APIs backed by the PLC Modbus TCP runtime and protocol driver. Extend AUBO JSON commands and isolate vendor libstdc++ paths while keeping build-tree tests runnable.
100 lines
3.7 KiB
CMake
100 lines
3.7 KiB
CMake
add_library(aubo_arm SHARED
|
|
aubo_arm.cpp
|
|
)
|
|
|
|
target_include_directories(aubo_arm PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
set(AUBO_SDK_ROOT ${CMAKE_SOURCE_DIR}/dependency/${ARCH}/third_party/aubo_sdk/v0.27.1)
|
|
set(AUBO_SDK_INCLUDE_DIR ${AUBO_SDK_ROOT}/include)
|
|
set(AUBO_SDK_LIB_DIR ${AUBO_SDK_ROOT}/lib)
|
|
|
|
if (EXISTS "${AUBO_SDK_LIB_DIR}/cmake/aubo_sdk/aubo_sdkConfig.cmake")
|
|
list(APPEND CMAKE_PREFIX_PATH "${AUBO_SDK_LIB_DIR}/cmake")
|
|
find_package(Qt5Core QUIET)
|
|
if (NOT Qt5Core_FOUND AND NOT TARGET Qt5::Core)
|
|
find_library(QT5_CORE_LIBRARY
|
|
NAMES Qt5Core libQt5Core.so.5
|
|
PATHS /lib /usr/lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
|
|
)
|
|
if (QT5_CORE_LIBRARY)
|
|
add_library(Qt5::Core UNKNOWN IMPORTED)
|
|
set_target_properties(Qt5::Core PROPERTIES
|
|
IMPORTED_LOCATION "${QT5_CORE_LIBRARY}"
|
|
)
|
|
endif()
|
|
endif()
|
|
find_package(aubo_sdk REQUIRED CONFIG PATHS "${AUBO_SDK_LIB_DIR}/cmake/aubo_sdk" NO_DEFAULT_PATH)
|
|
set_target_properties(aubo_sdk::aubo_sdk aubo_sdk::robot_proxy PROPERTIES
|
|
MAP_IMPORTED_CONFIG_DEBUG Release
|
|
)
|
|
target_compile_definitions(aubo_arm PRIVATE CMVR_HAS_AUBO_SDK)
|
|
target_include_directories(aubo_arm PRIVATE ${AUBO_SDK_INCLUDE_DIR})
|
|
target_link_libraries(aubo_arm PRIVATE aubo_sdk::aubo_sdk)
|
|
elseif (EXISTS "${AUBO_SDK_INCLUDE_DIR}/aubo_sdk/rpc.h")
|
|
target_compile_definitions(aubo_arm PRIVATE CMVR_HAS_AUBO_SDK)
|
|
target_include_directories(aubo_arm PRIVATE ${AUBO_SDK_INCLUDE_DIR})
|
|
if (EXISTS "${AUBO_SDK_LIB_DIR}")
|
|
target_link_directories(aubo_arm PRIVATE ${AUBO_SDK_LIB_DIR})
|
|
target_link_libraries(aubo_arm PRIVATE aubo_sdk)
|
|
endif()
|
|
else()
|
|
message(WARNING "Aubo SDK not found; AuboArm will compile as an unavailable vendor arm.")
|
|
endif()
|
|
|
|
target_link_libraries(aubo_arm
|
|
PUBLIC
|
|
cmvr_es::proto
|
|
PRIVATE
|
|
glog
|
|
jsoncpp
|
|
)
|
|
|
|
add_library(cmvr_es::device::aubo_arm ALIAS aubo_arm)
|
|
install(TARGETS aubo_arm LIBRARY DESTINATION lib)
|
|
|
|
if(BUILD_TESTING)
|
|
enable_testing()
|
|
add_executable(aubo_arm_json_command_test
|
|
tests/aubo_arm_json_command_test.cpp
|
|
)
|
|
target_link_libraries(aubo_arm_json_command_test
|
|
PRIVATE
|
|
cmvr_es::device::aubo_arm
|
|
cmvr_es::proto
|
|
)
|
|
add_test(
|
|
NAME aubo_arm_json_command_test
|
|
COMMAND aubo_arm_json_command_test
|
|
)
|
|
set_tests_properties(aubo_arm_json_command_test PROPERTIES
|
|
TIMEOUT 10
|
|
ENVIRONMENT "LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
|
|
)
|
|
if(UNIX AND NOT APPLE)
|
|
# The imported AUBO target still contributes its vendor directory to
|
|
# direct consumers' build-tree RUNPATH. Put the system runtime first
|
|
# for this test; installed artifacts exclude the vendor libstdc++.
|
|
execute_process(
|
|
COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libstdc++.so.6
|
|
OUTPUT_VARIABLE AUBO_TEST_SYSTEM_LIBSTDCXX
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if(EXISTS "${AUBO_TEST_SYSTEM_LIBSTDCXX}")
|
|
get_filename_component(
|
|
AUBO_TEST_SYSTEM_LIBSTDCXX_REAL
|
|
"${AUBO_TEST_SYSTEM_LIBSTDCXX}"
|
|
REALPATH
|
|
)
|
|
get_filename_component(
|
|
AUBO_TEST_SYSTEM_LIBSTDCXX_DIR
|
|
"${AUBO_TEST_SYSTEM_LIBSTDCXX_REAL}"
|
|
DIRECTORY
|
|
)
|
|
set_property(
|
|
TARGET aubo_arm_json_command_test
|
|
PROPERTY BUILD_RPATH "${AUBO_TEST_SYSTEM_LIBSTDCXX_DIR}"
|
|
)
|
|
endif()
|
|
endif()
|
|
endif()
|