| name | sqlitecpp-release |
| description | SQLiteCpp release procedure: bump the version across all files, finalize the CHANGELOG, open the Release PR, and tag. Use when cutting a new release, bumping the project version, or tagging. |
SQLiteCpp Release
How to cut a new SQLiteCpp release once the changes for it have landed on master. The per-PR
CHANGELOG and branching rules live in [[sqlitecpp-workflow]] and [[sqlitecpp-git-branching]].
1. Start a release branch
Branch from an up-to-date master: release-X.Y.Z (see [[sqlitecpp-git-branching]]).
2. Finalize the CHANGELOG
The entries should already be there from each PR (see [[sqlitecpp-workflow]]). For the release:
- Rename the heading from
Version X.Y.Z - <year> ??? to the real release date,
e.g. Version 3.4.0 - 2026 Jun 22.
- Confirm every merged PR since the previous tag has a bullet, including any change committed
directly to master.
3. Bump the version
Keep all of these in sync. The four-place version (e.g. 3.4.0) and the zero-padded macro form
(e.g. "3.04.00" / 3004000) must match.
CMakeLists.txt: project(SQLiteCpp VERSION X.Y.Z)
Doxyfile: PROJECT_NUMBER = X.Y.Z
package.xml: <version>X.Y.Z</version>
meson.build: version: 'X.Y.Z',
include/SQLiteCpp/SQLiteCpp.h:
#define SQLITECPP_VERSION "X.0Y.0Z" (each component zero-padded to two digits)
#define SQLITECPP_VERSION_NUMBER XYYZZ (e.g. 3.4.0 -> 3004000)
The header carries a WARNING: shall always be updated in sync with PROJECT_VERSION comment. Honor
it: a mismatch between the header macros and CMakeLists.txt is the most common release mistake.
Commit as Update project version to X.Y.Z.
4. Open the Release PR
Open a PR titled Release X.Y.Z. GitHub's "Generate release notes" lists the merged PRs and new
contributors; that summary is for the GitHub Release body, while CHANGELOG.md stays the
hand-curated record.
5. Tag after merge
After the Release PR merges, create the lightweight tag X.Y.Z (no v prefix, matching existing
tags) on the merge commit and publish the GitHub Release with the generated notes.
Version numbering
- Patch (
Z) for fixes and build tweaks only.
- Minor (
Y) when adding features, public API, or CMake/Meson options, or for a non-trivial SQLite
bump.
- Major (
X) for breaking API changes or a raised C++/CMake baseline.