Why do we need the devel, build and install spaces in a catkin workspace?
I have read the initial part of the article http://wiki.ros.org/catkin/workspaces , but I am still not having an intuitive understanding of why we need the devel
, build
and install
spaces. I can infer that the devel
space may contain mainly packages useful while developing (i.e. while editing the files in the src
directory, i.e. the source files, but then what's the purpose of the src
space?). What’s the difference between the devel
, build
and install
spaces?
I also have a few specific questions regarding the documentation I am linking you to above.
Regarding the build space, it states
The build space is where CMake is invoked to build the catkin packages in the source space.
Given that I am not very familiar with make
and cmake
, what does it mean "to build a package" in the context of catkin?
Then, it states regarding the devel space
The development space (or devel space) is where built targets are placed prior to being installed.
Again, given my ignorance regarding make
and cmake
, first of all, what is a target in the context of catkin, workspaces and ROS packages? What is a built target? Why do we need to place built targets here before installing them?
How is building a package different from installing? I understood we are building packages, but what are we installing? When do we need to install after building (which I associate more to compiling and linking source files)? When don't we need to install?
Why are the folders devel
, src
, build
and install
called spaces?