# cpp-build-system A cross-platform C++ project template and lightweight package manager built on **CMake**, **Docker**, and **Jenkins CI**. Designed to produce **single-binary, statically linked executables** on Linux using **musl-libc**, and **MinGW64** builds that are **as static as possible** โ€” all reproducibly built inside **Alpine Linux containers**. Supports **embedding Flutter UIs** directly within native C++ applications. All builds are orchestrated through project scripts โ€” **direct CMake invocation is not supported.** --- ## โœจ Features - ๐Ÿงฑ **Static Linux builds** using **musl-libc** inside **Alpine containers** - ๐ŸชŸ **MinGW64 cross-builds** from Alpine (static except core Win32 runtime) - ๐Ÿงฉ **MSYS2 builds** as fallback or for testing - ๐Ÿณ **Alpine-based Docker environments** for reproducible builds - ๐Ÿค– **Single Jenkins pipeline** orchestrating Win64 + Linux x64 + Linux aarch64 - ๐Ÿค– **Single Jenkins pipeline** orchestrating macOS x86-64 + macOS aarch64 - ๐Ÿ’  **Flutter embedding support** for modern native UIs - ๐Ÿงฐ **Root-level project generator** (`create_project.sh` / `.cmd`) - ๐Ÿงผ Ready for `clang-format`, `clang-tidy`, and CI automation --- ## ๐Ÿš€ Getting Started ### 1๏ธโƒฃ Clone the Build System ```bash git clone https://git.fifthgrid.com/sgraves/cpp-build-system.git git clone https://github.com/sgraves76/cpp-build-system.git cd cpp-build-system ``` --- ### 2๏ธโƒฃ Create a New Project Run the root-level `create_project.sh` with: 1. The **project name** 2. The **parent directory** where the new project should live Example: ```bash ./create_project.sh MyApp ~/dev ``` This creates: ``` ~/dev/MyApp/ ``` The new directory contains: - A preconfigured cross-platform C++ project structure - A `scripts/` folder for building and packaging - Default toolchains, configs, and dependency layout > ๐Ÿงฉ After creation, you'll work entirely within your new project โ€” **cpp-build-system** remains the master template. > โš ๏ธ Do **not** run `cmake` directly โ€” always use the provided scripts.