sighmake is a build system generator for C, C++, and C# projects. It reads concise
.buildscript files, basic CMake projects, and supported conversion inputs, then
generates project files for Visual Studio, CMake, or Make. C# support currently
targets Visual Studio with SDK-style .NET projects.
The goal is to keep build configuration readable, portable, and easy to review in version control.
- Human-readable INI-style buildscript format
- Visual Studio project and solution generation (
.vcxproj,.csproj,.sln,.slnx) - Makefile and CMake generation
- Direct build command with
sighmake --build - C and C++ language support, plus C# executables and libraries in Visual Studio
- Mixed native/managed solutions, managed assembly references, and automatic .NET restore
- Debug and Release defaults when no explicit configs are provided
- Per-config, per-platform, and per-file settings
- Project dependencies with
PUBLIC,PRIVATE, andINTERFACEvisibility - Wildcard source matching and platform-specific file filters
- Android cross-compilation with the NDK (
platforms = Android) - Visual Studio solution folders and project filters
find_package()support for common SDKs such as Vulkan, SDL, DirectX, and OpenGL- Visual Studio solution conversion back to buildscripts
- Valve VPC conversion entry point
- Release updater with
sighmake update
Download the latest release archive for your platform:
https://github.com/CitroenGames/sighmake/releases/latest
Linux and macOS can install the prebuilt binary directly into /usr/local/bin:
curl -fsSL https://github.com/CitroenGames/sighmake/releases/latest/download/sighmake-linux-x64.tar.gz | sudo tar -xz -C /usr/local/bincurl -fsSL https://github.com/CitroenGames/sighmake/releases/latest/download/sighmake-linux-arm64.tar.gz | sudo tar -xz -C /usr/local/bincurl -fsSL https://github.com/CitroenGames/sighmake/releases/latest/download/sighmake-macos-arm64.tar.gz | sudo tar -xz -C /usr/local/bincurl -fsSL https://github.com/CitroenGames/sighmake/releases/latest/download/sighmake-macos-x64.tar.gz | sudo tar -xz -C /usr/local/bin$installer = Join-Path $env:TEMP 'sighmake-windows-x64-setup.exe'; Invoke-WebRequest 'https://github.com/CitroenGames/sighmake/releases/latest/download/sighmake-windows-x64-setup.exe' -OutFile $installer; Start-Process $installer -WaitAlternatively, build and install from a Developer Command Prompt:
install.batVerify the install:
sighmake --versionFor source builds, custom install locations, tests, and release packaging, see docs/BUILD.md.
Create myapp.buildscript:
[solution]
name = MyApp
[project:MyApp]
type = exe
sources = src/*.cpp
headers = include/*.h
includes = include
std = 17
subsystem = ConsoleGenerate project files:
sighmake myapp.buildscriptBuild the generated project:
sighmake --build . --config Release --parallel 8On Windows, the default generator writes Visual Studio files under build/.
On Linux and macOS, the default generator writes Makefiles under build/.
Install Visual Studio and a .NET SDK supporting your chosen target framework.
For example, save this as managed.buildscript:
[solution]
name = ManagedApp
platforms = x64
[project:ManagedApp]
language = C#
type = exe
target_framework = net10.0
sources = src/**/*.cs
nullable = enable
implicit_usings = enableGenerate and build from the directory containing the buildscript:
sighmake managed.buildscript -g vcxproj
sighmake --build . --config Release --platform x64Use type = dll for managed libraries and target_link_libraries(PRIVATE Contracts)
to reference another managed project. dependencies = Contracts adds build ordering
only. --project ManagedApp selects a single project and builds its references.
See the mixed C++/C# example and
C# settings reference for windowed WPF/WinForms apps
(net*-windows + subsystem = Windows + use_wpf / use_windows_forms),
XAML and embedded resources, unsafe code, runtime configuration files, and other
options. C# generation for Makefile/CMake, importing .csproj files, and NuGet
package declarations are not yet supported.
sighmake <input-file> [options]
sighmake --build <dir> [build-options]
sighmake --convert <file.sln|.slnx|.vcxproj|.vcproj> [options]
sighmake convert vpc <file.vpc> [options]
Common generation options:
-g, --generator <type> Generator type: vcxproj, cmake, makefile, buildscript
-B, --build-dir <dir> Visual Studio output subdirectory, default: build
-D <NAME>=<VALUE> Define a variable for ${NAME} substitution
-t, --toolset <name> Default toolset, for example msvc2022 or msvc2019
--export-deps Export a dependency report as HTML
Common build options:
--config <cfg> Build configuration, for example Debug or Release
--platform <name> Visual Studio platform, for example x64 or Win32 (x86 aliases Win32)
--target <tgt> Build a target
--project <name|file> Build one generated project
--no-project-references Do not build referenced projects with --project
--clean Clean without building
--clean-first Clean before building
-j, --parallel <N> Parallel build jobs
Useful info commands:
sighmake --help
sighmake --list
sighmake --list-toolsets
sighmake update --check-onlySet a default Visual Studio toolset with:
set SIGHMAKE_DEFAULT_TOOLSET=msvc2022export SIGHMAKE_DEFAULT_TOOLSET=msvc2022[solution]
name = MyApplication
configurations = Debug, Release
platforms = x64, Linux
[project:MathLib]
type = lib
sources = mathlib/*.cpp
headers = mathlib/*.h
public_includes = mathlib
std = 17
[project:Calculator]
type = exe
sources = calculator/*.cpp
includes = calculator
subsystem = Console
target_link_libraries(
MathLib PUBLIC
)Buildscripts support:
sources,headers,resources,masm,nasm,idl, andmcinputs- Per-config settings such as
optimization[Release] = MaxSpeed - Per-platform settings such as
defines[x64] = WIN64 - Conditional blocks such as
if(Windows) { ... } - Per-file settings such as
pch.cpp:pch = Create - Shared settings with
include = common_settings.buildscript - Solution folders with
folder("Tools") { ... }
The full syntax reference is in usage.md.
- Build and installation guide
- Full usage guide
- VS Code extension
- Multi-project example
- Mixed C++/C# example
This project uses PugiXML, which is licensed under the MIT License.