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

Revision history [back]

click to hide/show revision 1
initial version

What is the observable/performance difference between installing and adding the executable?

None, as there isn't any. Your question presumes a relationship between building binaries and installing them that isn't there.

The biggest difference is in where the binaries (and other files, as you can install many more files, not just binaries) end up:

The difference between those two could be described as the former (devel) still being part of your Catkin workspace (and essentially stuck there, ie: you cannot just move it around), while the latter (install) is completely stand-alone, and could (in theory) be tarred-up and deployed to another machine.

The devel space is therefore something you use on your own machine (ie: source /path/to/catkin_ws/devel/setup.bash), while the install space is typically only used when deploying packages (either when building them to release them as .deb/.rpm/something else, or when deploying locally, for an overlay setup fi).


catkin_lint warns about your CMakeLists.txt not having any install(..) commands as it typically leads to all sorts of problems if/when you ever share your packages with other developers - either inside your own organisation or with the ROS community itself. Without install(..) statements the buildfarm will not be able to create proper debian packages out of your packages, your colleagues (who may be using the install space) will run into all sorts of problems wtih missing files (nothing ends up in the install space without you explicitly install(..)-ing it), etc, etc.

What is the observable/performance difference between installing and adding the executable?

None, as there isn't any. Your question presumes a relationship between building binaries and installing them that isn't there.

The biggest difference is in where the binaries (and other files, as you can install many more files, not just binaries) end up:

The difference between those two could be described as the former (devel) still being part of your Catkin workspace (and essentially stuck there, ie: you cannot just move it around), while the latter (install) is completely stand-alone, and could (in theory) be tarred-up and deployed to another machine.

The devel space is therefore something you use on your own machine (ie: source /path/to/catkin_ws/devel/setup.bash), while the install space is typically only used when deploying packages (either when building them to release them as .deb/.rpm/something else, or when deploying locally, for an overlay setup fi).


catkin_lint warns about your CMakeLists.txt not having any install(..) commands as it typically leads to all sorts of problems if/when you ever share your packages with other developers - either inside your own organisation or with the ROS community itself. Without install(..) statements the buildfarm will not be able to create proper debian packages out of your packages, your colleagues (who may be using the install space) will run into all sorts of problems wtih missing files (nothing ends up in the install space without you explicitly install(..)-ing it), etc, etc.


Edit: note though: there is something of a relationship between add_executable(..) and install(..): you cannot install(..) a binary/library that hasn't been created, so you'll need to first use add_executable(..)/add_library(..) before you can install(..) them.