Build scripts and packaging metadata for the native libraries used by ImGui.NET and UImGui.
This repository builds platform-specific native binaries (.dll, .so, and .dylib) for cimgui, cimplot, cimplot3d, cimnodes, cimnodes_r, cimguizmo, cimguizmo_quat, and cimCTE. It also produces the ImGui.NET.SourceBuild NuGet package, which bundles the cimgui and Dear ImGui C/C++ sources for projects that need to compile them directly, such as WebAssembly/Emscripten targets.
This project is also used to simplify and support the migration of ImGui.NET.4Unity.
Current version: 1.92.9
Current submodule references used by this repository:
| Project | Version/Ref |
|---|---|
cimgui |
b5f5e21 + Dear ImGui b334d19 (1.92.9, docking) |
cimplot |
da10052 + ImPlot 1351ab2 |
cimplot3d |
2da5c19 + ImPlot3D 6cbefa9 |
cimnodes |
ba3cd2e + imnodes c9bb8e9 |
cimnodes_r |
d7773e8 |
cimguizmo |
b5f40d7 + ImGuizmo dc25afb |
cimguizmo_quat |
7e50cad + imGuIZMO.quat 48f112c |
cimCTE |
84be9ba + compatible ImGuiColorTextEdit e83caa8 |
<library>/: Git submodules for each generated C wrapper.cmake/: injected CMake configurations shared by local and CI builds.build-native.cmd: Windows native build script.build-native.sh: Linux and macOS native build script.ci-build.cmdandci-build.sh: build all eight libraries.scripts/check-exports.sh: verifies required native exports.tests/ImGuiNativeTests/: functional native-loader tests.ImGui.NET.SourceBuild.csproj: NuGet source package project.version.json: Repository version managed by Nerdbank.GitVersioning.
- Git with submodule support.
- CMake.
- A native C/C++ toolchain for the target platform.
- .NET SDK for packing
ImGui.NET.SourceBuild.
On Windows, run the build from an environment where the Visual Studio C++ toolchain is available.
Run this once after cloning the repository:
git submodule update --init --recursiveTo update the wrapper forks to their configured branches:
git submodule update --remote --recursivebuild-native.cmd [Debug|Release] [x64|x86|ARM64|ARM] [--lib <library>]Examples:
build-native.cmd Release x64
build-native.cmd Debug ARM64
build-native.cmd Release x64 --lib cimplotBuild all eight libraries:
ci-build.cmd Release x64
ci-build.cmd Release x86Windows binaries are written under:
<library>/build/<ARCH>/<CONFIG>/
./build-native.sh [Debug|Release]Examples:
./build-native.sh Release
./build-native.sh DebugLinux and macOS binaries are written under:
<library>/build/<CONFIG>/
For macOS CI, the wrapper builds a universal binary using:
./build-native.sh Release -osx-architectures 'arm64;x86_64'The source package bundles the cimgui and dear imgui source files for consumers that compile the native code as part of their own build.
dotnet pack -c Release ImGui.NET.SourceBuild.csprojPackage output is written under:
bin/Packages/Release/
Release DLLs use:
- static MSVC runtime linkage (
/MT) - Address Space Layout Randomization (
/DYNAMICBASE) - Data Execution Prevention (
/NXCOMPAT) - Control Flow Guard (
/guard:cf) - reproducible linking (
/Brepro) - PE product and file-version metadata sourced from
version.json
The final DLLs must not import VCRUNTIME, MSVCP, or ucrtbase.
- Update and regenerate the individual wrapper forks.
- Push wrapper commits before updating this repository's gitlinks.
- Update every affected submodule pointer and
version.json. - Build Windows x64 and x86 locally.
- Run export checks, functional tests, PE dependency checks, and an antivirus scan.
- Push
mainand wait for the Windows ARM64, Linux x64, and macOS universal CI jobs. - Consume the exact CI artifacts in
ImGui.NET.4Unity; never mix artifacts from different native revisions.
Review the complete nested state before committing:
git status
git diff
git submodule status --recursiveReleases are triggered by annotated version tags.
git tag -a 1.92.9 -m "Release 1.92.9"
git push origin 1.92.9Tags matching N.N.N or vN.N.N are treated as public releases by version.json.
GitHub Actions builds all eight libraries for:
- Ubuntu x64
- macOS universal (
arm64+x86_64) - Windows x64, x86, and ARM64
The Windows x64 job also verifies exports, runs functional tests, and builds the NuGet source package.