A CMake build platform and dependency provider with reusable CI pipelines. Reproducible builds. Reusable dependencies. Consistent CI. Fewer “works on my machine” surprises.
externpro standardizes toolchains, dependencies, and CI workflows across developers, machines, and repositories—so teams ship faster with less drift and duplication.
-
externpro (core) 🧰 CMake build platform + dependency provider model + reusable workflows (
xpinit,xpupdate,xpbuild,xptag,xprelease). -
buildpro (Linux toolchain images) 🐳 Linux Docker build images used by externpro-enabled repos to keep compilers/tools/system deps consistent.
-
tutorial (adoption walkthrough) 🎓 Vendor externpro as a
.devcontainersubmodule, runxpInit, followxpTag → xpBuild → xpRelease, and consume externpro-produced deps viafind_package().
- Add externpro as a submodule to your project — the tutorial walks through the exact steps
- Run a CI workflow to intialize things
- Make small modifications to existing CMake (or introduce CMake)
- Use other org repos as reference implementations (see the externpro projects table: https://github.com/externpro/externpro/blob/main/cmake/README.md)
- Start building and delivering your projects on multiple OSes, architectures, and compilers - creating packages that can be consumed by other projects quickly and consistently!
- Read the core overview in externpro
- Review the foundational patterns in buildpro
| Capability | What it means |
|---|---|
| 🏗️ Build platform | A consistent build + toolchain baseline across Linux/macOS/Windows, x86_64/arm64, and multiple compiler toolchains (Linux buildpro containers; macOS/Windows GitHub-hosted runners) |
| 📦 Dependency provider | Dependencies are provided to your build as ready-to-use packages/targets, so consuming projects can just find_package() and link (rather than each repo reinventing fetch/build/patch) |
| 🔁 Reusable CI | Standardized init/update/build/test/tag/release pipelines with supply chain outputs (SBOM/attestation) |
Most repositories in the organization act as reference implementations—examples of integrating externpro and using the workflow as intended. See the externpro projects table: https://github.com/externpro/externpro/blob/main/cmake/README.md