-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
Hi there, when I try to initialize a previously declared environment like this:
env_ = std::make_shared<tesseract_environment::Environment>();I am getting a linker error like below:
/usr/bin/ld: CMakeFiles/generate_path_server.dir/src/generate_path_server.cpp.o: in function `tesseract_environment::Environment::Environment()':
generate_path_server.cpp:(.text._ZN21tesseract_environment11EnvironmentC2Ev[_ZN21tesseract_environment11EnvironmentC5Ev]+0x9c): undefined reference to `tesseract_kinematics::KinematicsPluginFactory::KinematicsPluginFactory()'
/usr/bin/ld: generate_path_server.cpp:(.text._ZN21tesseract_environment11EnvironmentC2Ev[_ZN21tesseract_environment11EnvironmentC5Ev]+0x1c1): undefined reference to `tesseract_collision::ContactManagersPluginFactory::ContactManagersPluginFactory()'
/usr/bin/ld: generate_path_server.cpp:(.text._ZN21tesseract_environment11EnvironmentC2Ev[_ZN21tesseract_environment11EnvironmentC5Ev]+0x434): undefined reference to `tesseract_kinematics::KinematicsPluginFactory::~KinematicsPluginFactory()'
/usr/bin/ld: CMakeFiles/generate_path_server.dir/src/generate_path_server.cpp.o: in function `tesseract_environment::Environment::~Environment()':
generate_path_server.cpp:(.text._ZN21tesseract_environment11EnvironmentD2Ev[_ZN21tesseract_environment11EnvironmentD5Ev]+0x98): undefined reference to `tesseract_collision::ContactManagersPluginFactory::~ContactManagersPluginFactory()'
/usr/bin/ld: generate_path_server.cpp:(.text._ZN21tesseract_environment11EnvironmentD2Ev[_ZN21tesseract_environment11EnvironmentD5Ev]+0x128): undefined reference to `tesseract_kinematics::KinematicsPluginFactory::~KinematicsPluginFactory()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/generate_path_server.dir/build.make:214: /home/my_user/catkin_ws/devel/.private/bot_arm_planner/lib/bot_arm_planner/generate_path_server] Error 1
make[1]: *** [CMakeFiles/Makefile2:3558: CMakeFiles/generate_path_server.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
cd /home/my_user/catkin_ws/build/bot_arm_planner; catkin build --get-env bot_arm_planner | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -These are the relevant parts of my CMakelist. In my desperation, I have added a lot of dependencies everywhere:
find_package(ros_industrial_cmake_boilerplate required)
cmake_minimum_required(version 2.8.12)
project(my_project)
set(cmake_cxx_standard 17)
set(cmake_cxx_flags "-mno-avx") # not adding this flag kept crashing the path server node in arjun's pc
include($env{ros_root}/core/rosbuild/rosbuild.cmake)
## find catkin macros and libraries
find_package(boost required)
find_package(catkin required components
dynamic_reconfigure
pluginlib
rosbag
rosconsole
roscpp
roslib
tf
tf_conversions
eigen_conversions
std_msgs
sensor_msgs
cmake_modules
message_generation
moveit_core
moveit_ros_planning
moveit_ros_planning_interface
moveit_planners_ompl
pluginlib
tesseract_msgs
tesseract_monitoring
tesseract_rosutils
tesseract_environment
tesseract_kinematics
)
find_package(eigen required)
# find_package(tesseract_environment required)
find_package(tesseract_environment required)
find_package(tesseract_command_language required)
find_package(tesseract_motion_planners required)
find_package(tesseract_task_composer required)
find_package(tesseract_collision required)
find_package(tesseract_common required)
find_package(tesseract_support required)
find_package(trajopt_sqp required)
find_package(trajopt_ifopt required)
find_package(tesseract_rosutils required)
find_package(tesseract_kinematics required)
catkin_python_setup()
rosbuild_find_ros_package(dynamic_reconfigure)
## add link directories
link_directories(
${boost_library_dirs}
${pcl_library_dirs}
${eigen_library_dirs}
)
add_service_files(
files
# ...omitted for brevity
)
generate_messages(
dependencies
std_msgs
geometry_msgs
trajectory_msgs
moveit_msgs
sensor_msgs
tesseract_msgs
)
catkin_package(
catkin_depends dynamic_reconfigure
moveit_core
moveit_ros_planning_interface
moveit_planners_ompl
message_runtime
depends
eigen3
)
# tried explicityly linking to tesseract stuff but get error:
# "cannot find -ltinyxml2:tinyxml2" even though it is installed,
# ld path is set and invoking ld -ltinyxml2 can find the lib
add_executable(generate_path_server src/generate_path_server.cpp)
target_link_libraries(generate_path_server
# tesseract::tesseract_environment
# tesseract::tesseract_motion_planners_core
# tesseract::tesseract_motion_planners_ompl
# tesseract::tesseract_motion_planners_trajopt
# tesseract::tesseract_motion_planners_trajopt_ifopt
# trajopt::trajopt_sqp
# trajopt::trajopt_ifopt
# tesseract::tesseract_task_composer
# tesseract::tesseract_task_composer_planning
# console_bridge::console_bridge
${catkin_libraries}
)
add_dependencies(omitted)(In this example, I lowercased everything by accident.)
The missing tesseract_kinematics package which builds to tesseract_kinematics_core can be found inside my catkin_ws/build/tesseract_kinematics/core/libtesseract_kinematics_core.so
As a side-note it would be nice if the example were isolated. Instead, the examples mostly import cmake configuration and headers from tesseract_examples. I understand how you don't want to repeat yourself, but it is harder to isolated what is needed per project.
Metadata
Metadata
Assignees
Labels
No labels