# The differences between dependency tags

I am new to Robotic Operating System, so this can be fundamental question. When I was investigating dependency tags of package.xml file of my newly-created package, I faced two dependency tags that I could not resolve.

According to the researches that I made, if a file from the package A is required to build our newly-created package, then package A is specified in the dependency tags like this: <build_depend> A </build_depend>. This sounds senseful. However, I could not find out following dependency tags:

<build_export_depend> </build_export_depend>

<exec_depend> </exec_depend>

When I created my package, I used the following command:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

These three packages are also specified in two tags mentioned above. Is there anyone who knows what these dependency tags mean ?

edit retag close merge delete

Sort by » oldest newest most voted

From the ROS wiki on catkin packages:

Build Dependencies specify which packages are needed to build this package. This is the case when any file from these packages is required at build time. This can be including headers from these packages at compilation time, linking against libraries from these packages or requiring any other resource at build time (especially when these packages are find_package()-ed in CMake). In a cross-compilation scenario build dependencies are for the targeted architecture.

Build Export Dependencies specify which packages are needed to build libraries against this package. This is the case when you transitively include their headers in public headers in this package (especially when these packages are declared as (CATKIN_)DEPENDS in catkin_package() in CMake).

Execution Dependencies specify which packages are needed to run code in this package. This is the case when you depend on shared libraries in this package (especially when these packages are declared as (CATKIN_)DEPENDS in catkin_package() in CMake).

Test Dependencies specify only additional dependencies for unit tests. They should never duplicate any dependencies already mentioned as build or run dependencies.

Build Tool Dependencies specify build system tools which this package needs to build itself. Typically the only build tool needed is catkin. In a cross-compilation scenario build tool dependencies are for the architecture on which the compilation is performed.

Documentation Tool Dependencies specify documentation tools which this package needs to generate documentation.

more

## Stats

Seen: 411 times

Last updated: Jan 22 '19