Hi,
I have a project to use MoveIt and planning which its CMakeList is as below:
cmake_minimum_required(VERSION 3.0)
PROJECT(project_one)
set(CMAKE_CXX_STANDARD 11)
find_package(Eigen3 REQUIRED)
find_package(Boost COMPONENTS system REQUIRED)
find_package(catkin REQUIRED COMPONENTS moveit_core moveit_ros_planning rosconsole urdf)
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
add_library(ProjectOne SHARED
src/ClassA.cpp
src/ClassB.cpp
src/ClassC.cpp
)
target_link_libraries(ProjectOne PRIVATE ${catkin_LIBRARIES} ${moveit_core_LIBRARIES} ${ros_console_LIBRARIES} ${moveit_ros_planning_LIBRARIES})
target_include_directories(ProjectOne PRIVATE include ${EIGEN3_INCLUDE_DIR} ${catkin_INCLUDE_DIRS} ${moveit_core_INCLUDE_DIRS} ${ros_console_INCLUDE_DIRS} ${moveit_ros_planning_INCLUDE_DIRS})
set_target_properties(PeojectOne PROPERTIES VERSION ${PROJECT_VERSION})
install(DIRECTORY include/
DESTINATION include/${PROJECT_NAME}
FILES_MATCHING PATTERN "*.h")
catkin_package(INCLUDE_DIRS include
CATKIN_DEPENDS roscpp roslib
DEPENDS)
install(TARGETS ProjectOne
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
The problem is that it compiles but when I run this command "nm -u ~/catkin_ws/build/projectOne/libProjectOne.so", I get these as undefined: (I demangled them)
robot_model_loader::RobotModelLoader::RobotModelLoader(std::__cxx11::basic_string, std::allocator> const&, bool)
robot_model_loader::RobotModelLoader::~RobotModelLoader()
ros::console::initialize()
ros::console::g_initialized
ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)
ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string, std::allocator> const&, ros::console::levels::Level)
ros::console::checkLogLocationEnabled(ros::console::LogLocation*)
ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)
ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::__cxx11::basic_stringstream, std::allocator> const&, char const*, int, char const*)
moveit::planning_interface::MoveGroupInterface::setNamedTarget(std::__cxx11::basic_string, std::allocator> const&)
moveit::planning_interface::MoveGroupInterface::MoveGroupInterface(std::__cxx11::basic_string, std::allocator> const&, boost::shared_ptr const&, ros::WallDuration const&)
moveit::planning_interface::MoveGroupInterface::~MoveGroupInterface()
moveit::core::RobotState::setToIKSolverFrame(Eigen::Transform&, std::__cxx11::basic_string, std::allocator> const&)
moveit::core::RobotState::RobotState(std::shared_ptr const&)
moveit::core::RobotState::~RobotState()
moveit::planning_interface::MoveGroupInterface::getJointValueTarget() const
moveit::core::RobotModel::getLinkModel(std::__cxx11::basic_string, std::allocator> const&) const
moveit::core::RobotModel::getJointModel(std::__cxx11::basic_string, std::allocator> const&) const
moveit::core::RobotModel::hasJointModel(std::__cxx11::basic_string, std::allocator> const&) const
moveit::core::RobotModel::getVariableIndex(std::__cxx11::basic_string, std::allocator> const&) const
moveit::core::RobotModel::getJointModelGroup(std::__cxx11::basic_string, std::allocator> const&) const
moveit::core::RobotState::getJacobian(moveit::core::JointModelGroup const*, moveit::core::LinkModel const*, Eigen::Matrix const&, Eigen::Matrix&, bool) const
moveit::core::RobotState::copyJointGroupPositions(moveit::core::JointModelGroup const*, Eigen::Matrix&) const
I want to use this package as a library which is not possible due to these undefined symbols. I think it is related to CMakeList options which I may set wrong.
Why this happen?
↧