

ROS utilizes a custom build system, catkin, that extends CMake to manage dependencies between packages.įor development of single software projects, existing tools like Autotools, CMake, and the build systems included with IDEs tend to be sufficient.
#MAKE VS CMAKE CODE#
The build system utilizes this information to process and build source code in the appropriate order to generate targets. With CMake, it is specified in a file typically called 'CMakeLists.txt' and with GNU Make it is within a file typically called 'Makefile'. In an IDE, this information is typically stored as part of the workspace/project meta-information (e.g. This is typically expressed in some set of configuration files read by the build system. C++ compiler), source code locations, code dependencies, external dependencies, where those dependencies are located, which targets should be built, where targets should be built, and where they should be installed. To build targets, the build system needs information such as the locations of tool chain components (e.g. Often the build systems in these IDEs are just front ends for console-based build systems such as Autotools or CMake. In addition, virtually all integrated development environments (IDEs) such as Qt Creator, Microsoft Visual Studio, and Eclipse add their own build system configuration tools for the respective languages they support.

Popular build systems that are used widely in software development are GNU Make, GNU Autotools, CMake, and Apache Ant (used mainly for Java). In ROS terminology, source code is organized into 'packages' where each package typically consists of one or more targets when built. C++ header files) or anything else that is not static code. These targets may be in the form of libraries, executable programs, generated scripts, exported interfaces (e.g.

The name catkin comes from the tail-shaped flower cluster found on willow trees - a reference to Willow Garage where catkin was created.Ī build system is responsible for generating 'targets' from raw source code that can be used by an end user. catkin's workflow is very similar to CMake's but adds support for automatic 'find package' infrastructure and building multiple, dependent projects at the same time. catkin was designed to be more conventional than rosbuild, allowing for better distribution of packages, better cross-compiling support, and better portability. catkin combines CMake macros and Python scripts to provide some functionality on top of CMake's normal workflow.

