externpro
externpro 🧰🔧
A CMake build platform and dependency provider with reusable CI pipelines. Reproducible builds. Reusable dependencies. Consistent CI. Fewer “works on my machine” surprises.
Why externpro? 🎯
externpro standardizes toolchains, dependencies, and CI workflows across developers, machines, and repositories—so teams ship faster with less drift and duplication.
Main repos 📌
-
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().
Start here 🚀
- Add externpro as a submodule to your project — the tutorial walks through the exact steps
- Run a CI workflow to initialize 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
What you get ✅
| 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) |
Repos in this org 🧪
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