add_subdirectory(arm_control) add_subdirectory(ume_legacy) #find_package(VISP REQUIRED) # 如果报 relocation ... can not be used when making a shared object; recompile with -fPIC ,说明SRC 中包含了test文件 ,test # 中链接 -lgtest -lgtest_main ,这是静态库,导致 libcontroller.so 被迫依赖 gtest。 # 所以 add_library(controller SHARED # src/controller_creator.cpp # src/pid_controller.cpp # ❌ 不要把 src/controller_test.cpp 放进来 #) 其他动态库类似 file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/pid/src/pid_controller.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ibvs/src/ibvs_controller.cpp ) add_library(controller SHARED ${SRC}) target_include_directories(controller PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(controller PUBLIC protobuf cmvr_es::perception cmvr_es::ik_solver gtest gtest_main pthread glog cmvr_es::proto ccd fcl cmvr_es::device_manager visp_vs visp_visual_features visp_vision visp_tt_mi visp_tt visp_me visp_mbt visp_klt visp_dnn_tracker visp_blob visp_sensor visp_robot visp_io visp_imgproc visp_gui visp_detection visp_core visp_ar pinocchio_default pinocchio_parsers ) add_library(cmvr_es::algorithms::controller ALIAS controller) install(TARGETS controller LIBRARY DESTINATION lib)