Setup instructions for using MetaImGUI as a template.
- ✅ Cross-platform ImGui application
- ✅ CI/CD workflows
- ✅ Installers (AppImage, .deb, NSIS, DMG)
- ✅ Update notifications
- ✅ Testing framework
- ✅ Code quality tools
- ✅ Packaging scripts
- Git
- CMake 3.16+
- C++20 compatible compiler (GCC 10+, Clang 10+, MSVC 2019 16.11+)
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
git \
libglfw3-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libcurl4-openssl-dev \
xorg-devsudo dnf install -y \
gcc-c++ \
cmake \
git \
glfw-devel \
mesa-libGL-devel \
mesa-libGLU-devel \
libcurl-devel \
libXrandr-devel \
libXinerama-devel \
libXcursor-devel \
libXi-devel- Install Visual Studio 2019+ with C++ tools
- Install CMake: https://cmake.org/download/
- Install vcpkg:
git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg cd C:\vcpkg .\bootstrap-vcpkg.bat .\vcpkg integrate install
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install cmake glfw# Clone into your new project directory
git clone https://github.com/yourusername/MetaImGUI.git MyAwesomeApp
cd MyAwesomeAppInteractive Mode (Recommended):
# Linux/macOS
./init_template.sh
# Windows
.\init_template.ps1The script will ask you for:
- Project name (e.g., "MyAwesomeApp")
- C++ namespace (e.g., "MyApp")
- Author name
- Project description
- GitHub username (for update checking)
Non-Interactive Mode:
./init_template.sh \
--name "MyAwesomeApp" \
--namespace "MyApp" \
--author "John Doe" \
--description "My awesome ImGui application" \
--github-user "johndoe"# Linux/macOS
./setup_dependencies.sh
# Windows
.\setup_dependencies.batDownloads ImGui v1.92.4, Catch2 v3.4.0, nlohmann/json v3.11.3
# Linux/macOS
./build.sh
# Windows
.\build.bat# Linux/macOS
./build/MyAwesomeApp
# Windows
.\build\Release\MyAwesomeApp.exeEdit src/Application.cpp and update the UpdateChecker initialization:
// Replace with your GitHub username and repository name
m_updateChecker = std::make_unique<UpdateChecker>("your-github-username", "your-repo-name");- Push your code to GitHub
- Go to your repository → Settings → Actions
- Enable GitHub Actions
- Push a tag to trigger your first release:
git tag v1.0.0 git push origin v1.0.0
- Create a 256x256 PNG icon
- Replace placeholder icons in
packaging/directory - Update icon paths in packaging scripts
# Create and push a version tag
git tag v1.2.3
git push origin v1.2.3
# GitHub Actions will automatically:
# - Build for Linux, Windows, macOS
# - Create installers
# - Generate changelog
# - Publish GitHub ReleaseLinux:
./packaging/create_linux_packages.sh 1.0.0
# Creates: AppImage, .deb, .tar.gzWindows:
.\packaging\create_windows_installer.ps1 -Version 1.0.0
# Creates: .msi installer, portable .zip# Build with tests enabled (default)
cmake -B build -DBUILD_TESTS=ON
cmake --build build
# Run tests
cd build
ctest --output-on-failure
# Or run test executable directly
./build/MetaImGUI_testsfind src include -name "*.cpp" -o -name "*.h" | xargs clang-format -i- Open the project folder in VS Code
- Install recommended extensions (prompt will appear)
- Press F5 to build and debug
- Ctrl+Shift+B to build
- Open the project root folder
- CMake configuration will be detected automatically
- Build and run using IDE controls
MyAwesomeApp/
├── .github/workflows/ # CI/CD automation
├── .vscode/ # VS Code configuration
├── cmake/ # Custom CMake modules
├── external/ # Third-party dependencies
├── include/ # Header files
├── src/ # Source files
├── tests/ # Unit tests
├── packaging/ # Installer scripts
├── resources/ # Application resources
├── CMakeLists.txt # Build configuration
├── init_template.sh # Project initialization
└── META_FEATURES.md # Detailed feature documentation
"ImGui not found"
# Run setup script
./setup_dependencies.sh"GLFW not found"
# Linux
sudo apt-get install libglfw3-dev
# Windows
vcpkg install glfw3:x64-windows
# macOS
brew install glfw"curl not found" (Linux)
sudo apt-get install libcurl4-openssl-dev"Cannot open display" (Linux)
# Ensure X11 is running
export DISPLAY=:0"Missing DLL" (Windows)
- Build type mismatch (Debug vs Release)
- Copy glfw3.dll from vcpkg to executable directory
- Edit
src/Application.cpp - Add source files
- Write tests in
tests/ - Update README.md
- Add LICENSE file
- Enable GitHub Actions
- Tag v1.0.0
- Template Documentation: See META_FEATURES.md
- ImGui Documentation: https://github.com/ocornut/imgui
- CMake Documentation: https://cmake.org/documentation/
- GitHub Actions: https://docs.github.com/en/actions
- Run
init_template.sh - Update README.md
- Add LICENSE file
- Replace icons
- Configure UpdateChecker
- Test on target platforms
- Write tests
- Enable GitHub Actions
- Push release tag
- Test installers