# Cpp Deploy

> Cpp Deploy is an Agent Skill for devops & security published in the nixopus/nixopus repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Build and deploy C/C++ applications — CMake, Meson, Ninja, and Dockerfile patterns. Use when deploying a C or C++ project, or when CMakeLists.txt or meson.build is detected.

- Skill name: `cpp-deploy`
- Category: [DevOps & Security](https://www.openparable.com/skill/devops-security/1)
- Source: https://github.com/nixopus/nixopus/blob/HEAD/api/skills/cpp-deploy/SKILL.md
- Repository: nixopus/nixopus (1,452 GitHub stars when collected)

## SKILL.md

# C/C++ Deployment

## Detection

Project is C/C++ if `CMakeLists.txt` or `meson.build` exists in the root.

## Versions

Latest CMake (or Meson) and Ninja installed during build. No explicit version pinning by default.

## Build

### Build Process

1. Install CMake or Meson and Ninja
2. Configure and build into `./build` (or `/build`)
3. Executable placed in the build directory

### Start Command

Executable name matches the project root directory name, located in the build directory.
Example: project `my_app/` → `./build/my_app` or `/build/my_app`.

### Output

- Build directory: `/build` (or `./build`)
- Source tree not included in final container; only build artifacts

## Build Systems

| File | Build system |
|---|---|
| `CMakeLists.txt` | CMake |
| `meson.build` | Meson |

Both use Ninja as the default generator/backend.

## Install Stage Optimization

Copy in order:
- `CMakeLists.txt` or `meson.build`
- `meson.options` (Meson)
- `src/`, `include/`, or full source tree

## Base Images

| Stage | Image |
|---|---|
| Build | `gcc` or `clang` + CMake/Meson + Ninja |
| Runtime | `debian:bookworm-slim` or `alpine` (copy binary only) |

## Dockerfile Patterns

### CMake

```dockerfile
FROM gcc:13-bookworm AS build
RUN apt-get update && apt-get install -y cmake ninja-build && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY CMakeLists.txt ./
COPY src src
RUN cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release && cmake --build build

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates libstdc++6 && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/build/my_app .
EXPOSE 8080
CMD ["./my_app"]
```

### Meson

```dockerfile
FROM gcc:13-bookworm AS build
RUN apt-get update && apt-get install -y meson ninja-build && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY meson.build meson.options* ./
COPY src src
RUN meson setup build -Dbuildtype=release && ninja -C build

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates libstdc++6 && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/build/my_app .
EXPOSE 8080
CMD ["./my_app"]
```

---

Source: https://www.openparable.com/skill/devops-security/cpp-deploy (OpenParable). Cite the canonical URL above.
