Generated by GPT-5-mini| colcon | |
|---|---|
| Name | colcon |
| Developer | Open Robotics/community |
| Released | 2018 |
| Programming language | Python (programming language) |
| Operating system | Linux, macOS, Windows |
| License | BSD |
colcon
colcon is a command-line build tool and task orchestrator for composing, building, and testing sets of software packages. It emerged to coordinate complex multi-package builds across ecosystems created by projects like ROS, ROS 2, Open Robotics, Blue Brain Project, and other research or industrial initiatives. colcon is designed to work with numerous build systems and package formats used by organizations such as Canonical, Microsoft, Amazon, NVIDIA, and Intel in contexts ranging from robotics to distributed simulation.
colcon provides a unified front end to assemble, build, test, and install many packages managed by different build tools such as CMake, ament_cmake, ament_python, catkin, Maven (software), and Gradle (software). It targets complex trees of software used by projects like ROS and ROS 2 while interoperating with ecosystems maintained by GitHub, GitLab, Bitbucket, and corporate repositories at GitHub. The tool emphasizes reproducibility and parallelism and is commonly used alongside continuous integration systems such as Jenkins (software), GitHub Actions, GitLab CI/CD, CircleCI, and Travis CI. Major users include Open Robotics, academic groups at Massachusetts Institute of Technology, Stanford University, and industrial labs at Toyota Research Institute and Bosch.
colcon implements dependency-aware, parallel builds with options for fine-grained control of the task graph used by orchestration engines like Ninja (build system), Make (software), and Bazel. It supports package discovery across workspaces managed by Git (software), Subversion, and other version control systems integrated with platforms such as SourceForge, GitHub, and GitLab. Features include incremental builds, isolated build directories, caching strategies influenced by practices from CMake and Bazel, test execution compatible with Google Test, pytest, and JUnit (software), and installation staging inspired by RPM and Debian packaging workflows. The architecture was influenced by build orchestration principles from projects including Buck (build system), scons, and Autotools.
Common colcon commands include build orchestration, test invocation, and package inspection used by developers at Open Robotics, researchers at Carnegie Mellon University, and engineers at Intel. Typical invocations resemble patterns used in CMake and catkin_make but extend to multi-build-system scenarios in the style of Bazel and Buck. Subcommands often referenced in community documentation are build, test, list, and graph, which integrate with continuous integration services like Jenkins, GitHub Actions, and GitLab CI/CD. colcon supports verbosity and logging conventions similar to systemd journal practices and outputs artifacts compatible with LCOV and gcov for coverage reporting used by projects maintained at Mozilla Foundation and Chromium.
colcon integrates with native build tools such as CMake, ament_cmake, ament_python, catkin, Ninja (build system), Maven (software), and Gradle (software). Integration points mirror patterns established by ROS and ROS 2 packaging, while also facilitating hybrid workspaces containing packages from Python (programming language), C++, Java (programming language), and Rust (programming language). The tool adapts dependency resolution ideas from RPM and Debian ecosystems and provides hooks used by vendors like NVIDIA and Microsoft to embed build steps into larger toolchains in enterprise settings such as Intel labs and Siemens research groups.
colcon has a plugin architecture enabling extensions maintained by community contributors from Open Robotics, academic institutions like ETH Zurich and University of Oxford, and companies including Amazon and Bosch. Plugins provide package type handlers, test runners, log parsers, and output formatters similar to extension systems found in Visual Studio Code, Eclipse (software), and JetBrains IDEs. Plugin repositories often live on GitHub and employ continuous integration via GitHub Actions and Travis CI to validate compatibility across Ubuntu LTS releases, Debian stable branches, and Windows builds.
colcon leverages environment control patterns familiar to users of bash (Unix shell), Zsh, PowerShell, and containerized runtimes like Docker (software) and Podman (software). Configuration files and workspace overlays follow conventions influenced by ROS workspace concepts and packaging manifests similar to package.xml conventions used by ROS and Debian packaging metadata. Runtime environments are often provisioned via tools such as Ansible, Chef (software), and Puppet (software) in enterprise deployments at organizations like Siemens, Toyota, and Bosch.
colcon originated from efforts within Open Robotics and collaborators in the ROS 2 community to replace earlier build orchestration flows used by ROS and catkin. Its development has been discussed in venues like ROSCon, conferences at IEEE workshops, and university courses at Massachusetts Institute of Technology and Stanford University. The project has seen contributions and packaging support from distributions including Debian, Ubuntu, and downstream integrations in projects hosted on GitHub and GitLab. colcon's evolution reflects community-driven improvements similar to those in CMake and Bazel ecosystems and has been influenced by real-world use from companies such as Intel, NVIDIA, Amazon, and Microsoft.
Category:Build automation software