{"id":16751741,"url":"https://github.com/jakoch/cpp-devbox","last_synced_at":"2025-10-28T03:03:47.489Z","repository":{"id":183563719,"uuid":"670362497","full_name":"jakoch/cpp-devbox","owner":"jakoch","description":"C++ DevBox is a docker devcontainer for C++ development. Based on Debian with LLVM, GCC, VulkanSDK, CMake, VCPKG, zsh.","archived":false,"fork":false,"pushed_at":"2024-05-22T19:29:07.000Z","size":94,"stargazers_count":7,"open_issues_count":1,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-05-22T20:37:52.184Z","etag":null,"topics":["bookworm","clang-17","clang-18","cpp","debian-12","debian-13","docker","gcc-12","gcc-13","llvm","trixie","vulkan-sdk"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakoch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-24T22:13:33.000Z","updated_at":"2024-06-25T19:00:24.406Z","dependencies_parsed_at":"2024-02-14T20:47:13.962Z","dependency_job_id":"e288111c-388c-48ea-97be-eaab2bd5a472","html_url":"https://github.com/jakoch/cpp-devbox","commit_stats":null,"previous_names":["jakoch/cpp-devbox"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakoch%2Fcpp-devbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakoch%2Fcpp-devbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakoch%2Fcpp-devbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakoch%2Fcpp-devbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakoch","download_url":"https://codeload.github.com/jakoch/cpp-devbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244880451,"owners_count":20525507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookworm","clang-17","clang-18","cpp","debian-12","debian-13","docker","gcc-12","gcc-13","llvm","trixie","vulkan-sdk"],"created_at":"2024-10-13T02:44:46.818Z","updated_at":"2025-10-28T03:03:47.484Z","avatar_url":"https://github.com/jakoch.png","language":"Dockerfile","readme":"![jakoch-cpp-devbox](assets/cpp-devbox-repo-card.png)\n\n# C++ DevBox [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/jakoch/cpp-devbox/release.yml?branch=main\u0026style=flat\u0026logo=github\u0026label=Image%20published%20on%20GHCR)](https://github.com/jakoch/cpp-devbox)\n\nA Docker-based development container for C/C++ development.\n\nIt is designed especially for use with Visual Studio Code or any IDE\nthat supports the devcontainer standard. The images can also be used in CI workflows.\n\n## Purpose\n\ncpp-devbox streamlines the setup of a complete C++ development stack in standardized and portable containers. It is optimized for modern C++ projects on Linux, providing compilers and tools for debugging, testing, documentation, CI.\n\nThe primary goal of these images is to enable a ready-to-use C++ development environment within Visual Studio Code using a [devcontainer configuration](https://github.com/jakoch/cpp-devbox#fetching-the-prebuilt-container-images-using-a-devcontainer-config).\n\n## Technical Base and Images\n\n### Distributions\n\nThis repository provides Dockerfiles for building container images based on Debian Linux.\n\nWe offer images for:\n\n- Debian 12 (Bookworm, oldstable),\n- Debian 13 (Trixie, stable),\n- Debian 14 (Forky, testing) and\n- Debian SID (unstable).\n\n## Container Images\n\nThere are two main variants per distribution: one with the standard toolchain\nand one with an additional Vulkan SDK and Mesa for graphics development.\n\n- **base:** Includes GCC and LLVM.\n- **with-vulkansdk:** Includes GCC, LLVM, and additionally the Vulkan SDK with Mesa.\n\n## Container Registries\n\nThe images are automatically published to Github Container Registry (GHCR) and\nthe Docker Hub (hub.docker.com) upon updates.\n\nFor a complete list of C++ related tools, see [What is pre-installed?](#what-is-pre-installed).\n\n## Available Images\n\n[bookworm-latest]: https://ghcr.io/jakoch/cpp-devbox:bookworm-latest\n[trixie-latest]:   https://ghcr.io/jakoch/cpp-devbox:trixie-latest\n[forky-latest]:    https://ghcr.io/jakoch/cpp-devbox:forky-latest\n[bookworm-with-vulkansdk-latest]: https://ghcr.io/jakoch/cpp-devbox:bookworm-with-vulkansdk-latest\n[trixie-with-vulkansdk-latest]: https://ghcr.io/jakoch/cpp-devbox:trixie-with-vulkansdk-latest\n[forky-with-vulkansdk-latest]: https://ghcr.io/jakoch/cpp-devbox:forky-with-vulkansdk-latest\n\n| ⭣ Version Tag \u0026nbsp;\u0026nbsp; OS ⭢  | Debian 12 - Bookworm       | Debian 13 - Trixie  | Debian 14 - Forky   |\n|-----------------------------------|---------------------------|---------------------|---------------------|\n| Latest | [bookworm-latest] \u003cbr\u003e ![Latest Version of Bookworm](https://img.shields.io/docker/v/jakoch/cpp-devbox/bookworm-latest?label=Latest%20Version) \u003cbr\u003e ![bookworm-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=bookworm-latest\u0026label=image+size) | [trixie-latest] \u003cbr\u003e ![Latest Version of Trixie](https://img.shields.io/docker/v/jakoch/cpp-devbox/trixie-latest?label=Latest%20Version) \u003cbr\u003e ![trixie-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=trixie-latest\u0026label=image+size) | [forky-latest] \u003cbr\u003e ![Latest Version of Forky](https://img.shields.io/docker/v/jakoch/cpp-devbox/forky-latest?label=Latest%20Version) \u003cbr\u003e ![forky-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=forky-latest\u0026label=image+size)\n| Latest \"with-vulkansdk\" | [bookworm-with-vulkansdk-latest] \u003cbr\u003e ![Latest Version of Bookworm with VulkanSDK](https://img.shields.io/docker/v/jakoch/cpp-devbox/bookworm-with-vulkansdk-latest?label=Latest%20Version) \u003cbr\u003e ![bookworm-with-vulkansdk-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=bookworm-with-vulkansdk-latest\u0026label=image+size) | [trixie-with-vulkansdk-latest] \u003cbr\u003e ![Latest Version of Trixie with VulkanSDK](https://img.shields.io/docker/v/jakoch/cpp-devbox/trixie-with-vulkansdk-latest?label=Latest%20Version) \u003cbr\u003e ![trixie-with-vulkansdk-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=trixie-with-vulkansdk-latest\u0026label=image+size) | [forky-with-vulkansdk-latest] \u003cbr\u003e ![Latest Version of Forky with VulkanSDK](https://img.shields.io/docker/v/jakoch/cpp-devbox/forky-with-vulkansdk-latest?label=Latest%20Version) \u003cbr\u003e ![forky-with-vulkansdk-latest](https://ghcr-badge.egpl.dev/jakoch/cpp-devbox/size?color=%2344cc11\u0026tag=forky-with-vulkansdk-latest\u0026label=image+size)\n\nYou find the [versioning scheme for images below](#versioning-scheme-for-images).\n\n## What is pre-installed?\n\nThe image provides all essential C++ ecosystem tools for a complete development\nenvironment. Including shell \u0026 basic utilities, compilers, build systems,\ndebugging tools, assemblers, package managers, documentation tools, and\noptional graphics SDKs.\n\nHere is a basic overview of the pre-installed tools.\nFor details, please refer to the Dockerfiles.\n\nOn top of the Debian base image the following tools are installed:\n\n- zsh with plugins: autosuggestions, completions, history substring search\n- git, nano, jq\n- curl, wget\n- cppcheck, valgrind\n- lcov, gcov, gcovr\n- strace, ltrace\n- perf, gprof\n- nasm, fasm\n- meson\n- CMake (latest version)\n- ccache (latest version)\n- vcpkg (latest version)\n- mold (latest version)\n- Doxygen (latest version)\n- git, github cli\n\nThe **with-vulkansdk** distributions additionally contain the Vulkan SDK and Mesa.\n\n### [Dockerfile for Debian 12 - Bookworm](https://github.com/jakoch/cpp-devbox/blob/main/.devcontainer/debian/12-bookworm/Dockerfile) (oldstable)\n\nThe following C/C++ compilers and their toolchains are available:\n\n- LLVM 20.1.0\n- GCC 12.2.0\n- GCC 13.4.0\n\n### [Dockerfile for Debian 13 - Trixie](https://github.com/jakoch/cpp-devbox/blob/main/.devcontainer/debian/13-trixie/Dockerfile) (stable)\n\nThe following C/C++ compilers and their toolchains are available:\n\n- LLVM 21.1.0\n- GCC 14.2.0\n\n### [Dockerfile for Debian 14 - Forky](https://github.com/jakoch/cpp-devbox/blob/main/.devcontainer/debian/14-forky/Dockerfile) (testing)\n\nThe following C/C++ compilers and their toolchains are available:\n\n- LLVM 21.1.0\n- GCC 14.3.0\n- GCC 15.2.0\n\n### VulkanSDK\n\nThe `with-vulkansdk` image variant additionally contains:\n\n- Vulkan SDK 1.4.321.1\n- Mesa 22.3.6 (bookworm), 24.2.8 (trixie), 24.2.8 (forky)\n  - (for software rendering with [LLVMpipe](https://docs.mesa3d.org/drivers/llvmpipe.html))\n\n[What is the latest version of VulkanSDK?](https://vulkan.lunarg.com/sdk/latest.json)\n\n## Prerequisites\n\nYou need the following things to run this:\n\n- Docker\n- Visual Studio Code\n\n## How to run this?\n\nThere are two ways of setting the container up.\n\nEither by building the container image locally or by fetching the prebuilt container image from a container registry.\n\n### Building the Container Image locally using VSCode\n\n- **Step 1.** Get the source: clone this repository using git or download the zip\n\n- **Step 2.** In VSCode open the folder in a container (`Remote Containers: Open Folder in Container`):\n\n   This will build the container image (`Starting Dev Container (show log): Building image..`)\n\n   Which takes a while...\n\n   Then, finally...\n\n- **Step 3.**  Enjoy! :sunglasses:\n\n### Fetching the prebuilt container images using Docker\n\nThis container image is published to the Github Container Registry (GHCR) and the Docker Hub (hub.docker.com).\n\nYou may find the Docker Hub repository here: https://hub.docker.com/r/jakoch/cpp-devbox\n\nYou may find the GHCR package here: https://github.com/jakoch/cpp-devbox/pkgs/container/cpp-devbox\n\nIn order to pull from GHCR add the prefix (`ghcr.io/`).\n\n**Command Line**\n\nYou can install the container image from the command line:\n\n```bash\ndocker pull ghcr.io/jakoch/cpp-devbox:trixie-latest\n```\n\n```bash\ndocker pull jakoch/cpp-devbox:trixie-latest\n```\n\nFor the image containing Vulkan SDK append `with-vulkansdk-latest`:\n\n```bash\ndocker pull jakoch/cpp-devbox:trixie-with-vulkansdk-latest\n```\n\n**Dockerfile**\n\nYou might also use this container image as a base image in your own `Dockerfile`:\n\n```bash\nFROM jakoch/cpp-devbox:trixie-latest\n```\n\n### Fetching the prebuilt container images using a .devcontainer config\n\n**Devcontainer.json**\n\nYou might use this container image in the `.devcontainer/devcontainer.json` file of your project:\n\n```json\n{\n  \"name\": \"My C++ Project DevBox\",\n  \"image\": \"ghcr.io/jakoch/cpp-devbox:trixie-latest\"\n}\n```\n\n**Devcontainer.json + with-vulkansdk image**\n\nYou might use this container image in the `.devcontainer/devcontainer.json` file of your project:\n\n```json\n{\n  \"name\": \"My C++ Project DevBox\",\n  \"image\": \"ghcr.io/jakoch/cpp-devbox:trixie-with-vulkansdk-latest\"\n}\n```\n\n#### Developer Notes\n\n### Versioning Scheme for Images\n\nThe container images use the following versioning scheme.\n\nThe base URL for GHCR.io is: `ghcr.io/jakoch/cpp-devbox:{tag}`.\n\n#### Scheduled Builds\n\nThe following container tags are created for scheduled builds:\n\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-{date}}`\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-with-vulkansdk-{{date}}`\n\n#### For git tag\n\nThe following container tags are created for git tags:\n\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-{{ version }}`\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-{{ major }}.{{ minor }}`\n\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-with-vulkansdk-{{ version }}`\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-with-vulkansdk-{{ major }}.{{ minor }}`\n\n#### Latest\n\nThe container tag \"latest\" is applied to the latest build:\n\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-latest`\n- `ghcr.io/jakoch/cpp-devbox:{debian_codename}-with-vulkansdk-latest`\n\n### Field Notes for building devbox-test locally\n\n- Before building, please remove any CMake build artifacts from the `devbox-test` directory. Otherwise, these files may be copied into the container and block a\n  clean rebuild.\n- To build and run `devbox-test`, use the following command (for Linux/macOS):\n  ```\n  docker run --rm -v \"$(PWD)/devbox-test:/test-src\" -w /test-src ghcr.io/jakoch/cpp-devbox:trixie-latest zsh -c \"./build.sh\"\n  ```\n- On Windows, use a relative path for the volume mount:\n  ```\n  docker run --rm -v \".\\devbox-test:/test-src\" -w /test-src ghcr.io/jakoch/cpp-devbox:trixie-latest zsh -c \"./build.sh\"\n  ```\n- This command mounts the `devbox-test` folder into the container as `/test-src`, then runs `build.sh` inside the container using `zsh`.\n\n### License\n\n- Open Source: MIT License.\n- Copyright: Jens A. Koch and contributors.\n\n### Snappy AI-Generated Project Summary\n\ncpp-devbox provides developers with a robust, ready-to-use C++ stack, complete with build tools, debuggers, analysis utilities, and modern graphics development support. Ideal for both local development and CI/CD pipelines.\n\n### A Punchy One-Liner for Marketing\n\ncpp-devbox: A ready-to-go C++ development stack for coding, debugging, and CI/CD—out of the box.\n\n\u003c!-- markdownlint-disable --\u003e\n\u003c!-- Search Engine Keywords: cpp-devbox, C++ development environment, Docker container for C++, VS Code devcontainer, C++ CI/CD pipeline, modern C++ tools, cross-platform C++ build, C++ debugging tools, C++ graphics development, C++ compilers, C++ testing tools, C++ documentation tools, Linux C++ development, portable C++ environment, C++ build automation, C++ code analysis, C++ workflow, C++ IDE setup, preconfigured C++ stack, C++ software development, DevOps C++, Debian, LLVM, Clang, GCC, vcpkg, mold, VulkanSDK, Mesa  --\u003e\n\u003c!-- markdownlint-enable --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakoch%2Fcpp-devbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakoch%2Fcpp-devbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakoch%2Fcpp-devbox/lists"}