ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

tinyxml and yaml-cpp

asked 2011-10-20 04:26:02 -0500

SyllogismRXS gravatar image

I am trying to install opencv packages on a Gumstix Overo COM. I have successfully installed the base ROS functions such as roscore, rosmake, etc. and I can run roscore with several nodes. However, some of the opencv packages require tinyxml and yaml-cpp, which rosdep is not able to install on the Gumstix's ARM processor. Thus, I tried to install the packages from source:

yaml-cpp :

tinyxml :

Both programs compile/install natively with: cmake, make, sudo make install.

However, rosdep still can't find the system dependencies for tinyxml and yaml-cpp.

Where does rosdep look for the system dependencies?

Gumstix OS: Ubuntu 10.04 Using ROS Electric


edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted

answered 2011-10-20 05:49:49 -0500

kwc gravatar image

rosdep is a front-end to package managers like apt, pip, macports, yum, etc... It (generally) does not attempt to look for your own source-based installations. Thus, if you've installed the system dependencies yourself, you don't need to use rosdep, in the same way that you don't need to use apt.

If the dependencies aren't being located, then you'll need to look in:

  1. the tinyxml and yamlcpp ROS packages and see if the manifest.xml is correctly forwarding the flags (look for the <cpp> export)
  2. the CMakeLists.txt build files of the things that are failing to build to see if they are linking improperly

In ROS Electric, we started transitioning both tinyxml and yamlcpp to system dependencies, which is why there are two places to look. In future releases, it will just be #2.

edit flag offensive delete link more

answered 2011-10-20 11:25:46 -0500

SyllogismRXS gravatar image

So, I tried to compile and run a simple C++ program on the Gumstix that linked to the TinyXML library with the use of cmake and I was successful. However, I still have problems when I try to run make on image_transport. Could it be that the TinyXML source code I compiled is different from the TinyXml library the image_transport package is expecting? Here is the output of the make... any help is appreciated.

syllogismrxs@overo:~/code/ros/stacks/image_common/image_transport$ make
mkdir -p bin
cd build && cmake -Wdev -DCMAKE_TOOLCHAIN_FILE=`rospack find rosbuild`/rostoolchain.cmake  ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
[rosbuild] Building package image_transport
[rosbuild] Cached build flags older than manifests; calling rospack to get flags
[rosbuild] Including /home/syllogismrxs/ros/electric/ros/ros_comm/clients/roslisp/cmake/roslisp.cmake
[rosbuild] Including /home/syllogismrxs/ros/electric/ros/ros_comm/clients/rospy/cmake/rospy.cmake
[rosbuild] Including /home/syllogismrxs/ros/electric/ros/ros_comm/clients/cpp/roscpp/cmake/roscpp.cmake
-- Configuring done
-- Generating done
-- Build files have been written to: /home/syllogismrxs/code/ros/stacks/image_common/image_transport/build
cd build && make 
make[1]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
make[2]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
make[3]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
Scanning dependencies of target rospack_genmsg_libexe
make[3]: Leaving directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
[  0%] Built target rospack_genmsg_libexe
make[3]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
Scanning dependencies of target rosbuild_precompile
make[3]: Leaving directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
[  0%] Built target rosbuild_precompile
make[3]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
Scanning dependencies of target image_transport
make[3]: Leaving directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
make[3]: Entering directory `/home/syllogismrxs/code/ros/stacks/image_common/image_transport/build'
[ 10%] Building CXX object CMakeFiles/image_transport.dir/src/publisher.o
In file included from /home/syllogismrxs/code/ros/stacks/pluginlib/include/pluginlib/class_loader.h:237,
                 from /home/syllogismrxs/code/ros/stacks/image_common/image_transport/src/publisher.cpp:37:
/home/syllogismrxs/code/ros/stacks/pluginlib/include/pluginlib/class_loader_imp.h: In constructor ‘pluginlib::ClassLoader<T>::ClassLoader(std::string, std::string, std::string)’:
/home/syllogismrxs/code/ros/stacks/pluginlib/include/pluginlib/class_loader_imp.h:62: error: no matching function for call to ‘TiXmlDocument::LoadFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’
/usr/local/include/tinyxml.h:1417: note: candidates are: bool TiXmlDocument::LoadFile(TiXmlEncoding)
/usr/local/include/tinyxml.h:1421: note:                 bool TiXmlDocument::LoadFile(const char*, TiXmlEncoding)
/usr/local/include/tinyxml.h:1429: note:                 bool TiXmlDocument::LoadFile(FILE ...
edit flag offensive delete link more


Looks like you compiled tinyxml without TIXML_USE_STL defined. ROS code using tinyxml assumes that the STL parts are included. Try enabling TIXML_USE_STL in tinyxml's Makefile, and rebuilding (and reinstalling) it.
Brian Gerkey gravatar image Brian Gerkey  ( 2011-10-21 03:30:11 -0500 )edit

Question Tools


Asked: 2011-10-20 04:26:02 -0500

Seen: 2,187 times

Last updated: Oct 20 '11