Atualizado para a versão mais recente do Imgui/Cimgui :: v1.91.6dock (2024/12)
Este projeto é o meu projeto de experimento para usar a linguagem NIM, Imgui, Implet, Futhark e etc.
Nim-2.0.14 ou mais tarde
Windows10 ou posterior
Ferramentas da linha de comando msys2/mingw (ferramentas unix), make, cp, rm, git, ... etc
Linux Mint 22 (ou Ubuntu / Debian Families)
$ sudo apt install gcc g++ make git $ sudo apt install xorg-dev libopengl-dev libgl1-mesa-dev
$ sudo apt install libglfw3 libglfw3-dev libsdl2-devnimble uninstall imguin # Remove old versions if exists.
nimble install https://github.com/dinau/imguinPrimeiro clone este projeto,
git clone https://github.com/dinau/imguinO programa de amostra está aqui, exemplos. Por exemplo, GLFW_OPENGL3_BASE.NIM,
cd imguin/examples/glfw_opengl3_base
make # or make run Após a construção, execute ./glfw_opengl3_base(.exe)
As opções de compactação dependem de ./config.nims e ./Makefile .
Para selecionar link estático ou link dinâmico, leia esses exemplos/readme.md.
| Nome da biblioteca | ||
|---|---|---|
| v | Imgui / Cimgui | Biblioteca base |
| v | Implet / cimplot | |
| v | Imnodes / Cimnodes | |
| v | IMGUIZMO / CIMGUIZMO | |
| v | Imgui-knobs/ cimgui-knobs | |
| v | IMGUIFILEDALOG / CIMGUIFILEDALOG | |
| ... | ... | ... |
| x | ImguicolortExtedit / cimcte | 2025? |
| GLFW | SDL2 | SDL3 | ||
|---|---|---|---|---|
| Opengl3 back -end | v | v | v | |
| SDL2 back -end | - | ? | - | 2025? |
| SDL3 back -end | - | - | ? | 2025? |
Essas capturas de tela estão no Windows10.
Exemplo básico com fontes de ícone

Construir
pwd
examples/glfw_opengl3
make # or make runou
nim c glfw_opengl3.nim # or nim c -r glfw_opengl3.nim or nim r glfw_opengl3.nim https://github.com/altschuler/imgui-knobs
As fontes CIMGUI-KNOBS foram contribuídas por System64MC / PR (2024/12). Obrigado.

Construir
pwd
examples/glfw_opengl3_imknobs
make ou
nim c -d:ImKnobsEnable --warning:HoleEnumConv:off glfw_opengl3_imknobs.nim IMGUIFILEDALOG / CIMGUIFILEDALOG

Construir
pwd
examples/glfw_opengl3_filedialog
make ou
nim c -d:ImGuiFileDialogEnable glfw_opengl3_filedialog.nim Visualizador de fontes de ícone e lupa

Construir
pwd
examples/iconFontViewer
make ou
nim c iconFontViewer.nim Carga de imagem e lupa

Construir
pwd
examples/glfw_opengl3_image_load
make ou
nim c glfw_opengl3_image_load.nim Construa a versão SDL2
pwd
examples/sdl2_opengl3
make ou
nim c -d:SDL sdl2_opengl3.nim Construa a versão SDL3
Somente o sistema operacional do Windows neste momento e WIP.
pwd
examples/sdl3_opengl3
make ou
nim c -d:SDL sdl3_opengl3.nim Carga de imagem / salvar e lupa
Ele pode salvar uma captura de tela como arquivo [JPG, BMP, PNG ou TGA].

Construir
pwd
examples/glfw_opengl3_image_save
make # or make runou
nim c glfw_opengl3_image_save.nim Mostrando texto UTF-8 e texto de entrada com um idioma local do país. 
Construir
pwd
examples/glfw_opengl3_jp
make # or make runou
nim c glfw_opengl3_jp.nim Mostrando a demonstração de imgui com demonstração Implet. 
Construir
pwd
examples/glfw_opengl3_implot
make # or make runou
nim c -d:ImPlotEnable glfw_opengl3_implot.nim
Construir
pwd
examples/glfw_opengl3_imnodes
make # or make runou
nim c -d:ImNodesEnable glfw_opengl3_imnodes.nim
Construir
pwd
examples/glfw_opengl3_imguizmo
make # or make runou
nim c -d:ImGuizmoEnable glfw_opengl3_imguizmo.nim
Ver:
Compilação cruzada para o Windows, erro de ligação (opção não reconhecida '-z'
https://nim-lang.org/docs/nimc.html#crossminuscompilation-for-windows
Por exemplo, no Linux Mint 22 e assim por diante,
pwd
examples
cd glfw_opengl3make win ou
nim c -d:mingw glfw_opengl3ou
nim c --os:windows glfw_opengl3 glfw_opengl3.exe será gerado na pasta atual.
Git instalado.
Ferramentas de linha de comando MSYS2/Mingw instaladas (Ferramentas UNIX), Make, CP, RM, ... etc
Windows10 ou posterior clang/llvm consulte a instalação do Futhark.
nimble install futhark Ele deve existir no arquivo libclang.a no caminho da biblioteca (por exemplo, em c:llvmlib ).
Linux Debian 12 Bookworm
sudo apt install clang-16
nimble install --passL: " -L/usr/lib/llvm-16/lib " futharkAviso importante: Confirme a versão Futhark é v0.13.6 No momento. (2024/09)
nimble dump futhark
name: " futhark "
version: " 0.13.6 "
author: " PMunch "
desc: " A package which uses libclang to parse C headers into Nim files for easy interop "
license: " MIT "
... Compor pastas de desenvolvimento
Primeiro mover para a sua pasta de trabalho que você gosta, então
mkdir imguin_dev
cd imguin_dev
git clone https://github.com/dinau/imguin
cd imguinClone imgui/cimgui etc. fontes de uma vez para sempre
pwd
imguin
make clonelibs Bibliotecas clonadas estão sob ../libs/ Pasta
Atualize recursivamente as fontes usando o comando git Pull ou fetch na pasta de cada biblioteca,
../libs/cimgui
../libs/cimguizmo
../libs/cimnodes
../libs/cimplot
Versão arbitrária de checkout com comando git na respectiva pasta
Especifique seu Clang incluir caminho para ClangIncludePath em imguin/src/imguin/cimgui.nim .
Gerar o arquivo de definição uisng Futhark,
pwd
imguin
make gen Instale arquivos atualizados
Edite corretamente as informações da versão etc. no arquivo imguin.nimble , então
pwd
imguin
nimble uninstall imguin # Remove old versions if it exists.
nimble install Isso é tudo.
Repita de 3. Se você deseja atualizar ou rebaixar para outra versão.
Versão confirmada
| Imgui/cimgui ver. | Imguin ver. | Data | Windowsos | Linux Mint 22 | Debian Livro -Livro (1) |
|---|---|---|---|---|---|
| 1.91.6dock | 1.91.6.6 | 2024/12 | OK | OK | - |
| 1.91.5dock | - | - | - | - | - |
| 1.91.4dock | 1.91.4.2 | 2024/12 | OK | OK | - |
| 1.91.3dock | 1.91.3.1 | 2024/10 | OK | (7) | - |
| 1.91.2dock | 1.91.2.0 | 2024/10 | OK | (7) | - |
| 1.91.1dock | 1.91.1.2 | 2024/09 | OK | (6) | - |
| 1.91.0dock | 1.91.0.0 | 2024/08 | OK | - | (7) |
| 1.90.4dock | 1.90.4.2 | 2024/02 | OK | - | OK (4) |
| 1.90.1dock | 1.90.1.0 | 2024/01 | OK | - | Ng/ok (1) (3) (4) |
| 1.89.9dock | 1.89.9.8 | 2023/12 | OK | - | Ng/ok (1) (3) (4) |
(1): Exceto Imnodes e SDL2 Exemplo.
(2): não funciona bem.
(3): Funciona bem apenas se for compilado modo de depuração.
(4): Use NIM-2.0.2
(5): Não sei por que não pode ser compilado no Linux.
(6): OK: exceto o exemplo de imnodes
(7): Não foi verificado neste momento.
Você pode usar outro compilador C/C ++,
Clang, vcc(Visual Studio C/C++) , zig cc
Alterando a variável TC em exemplos/config.nims.common.
cimgui.dll ? (Agora só pode ser um link estático)nimble install imguin ? Instale UPX com o MSYS Console no Windowsos,
pacman -S mingw-w64-x86_64-upxPara arquivo exe de compressão,
pwd
examples
cd glfw_opengl3_implot
make upx Ultimate Packer for eXecutables
Copyright (C) 1996 - 2024
UPX 4.2.4 Markus Oberhumer, Laszlo Molnar & John Reiser May 9th 2024
File size Ratio Format Name
-------------------- ------ ----------- -----------
7117824 - > 1217024 17.10% win64/pe glfw_opengl3_implot.exe Descomprimindo,
make dupxResultar em,
| GCC + UPX: GCC | CLANG + UPX: CLANG | MSVC (VCC) + UPX: MSVC | |
|---|---|---|---|
| GLFW_OPENGL3.EXE | 804 KB: 2360 KB | 720 KB: 2200 KB | 742 KB: 2070 KB |
| GLFW_OPENGL3_IMPLOT.EXE | 1220 KB : 7120 KB | 940KB : 4200 KB | 945 KB : 3810 KB |
GCC: v14.2.0, Clang: v18.1.8, MSVC: 2022
Windows11 (principal)
NIM Compiler versão 2.2.0
GCC (Rev1, construído pelo projeto MSYS2) 14.2.0
pacman -S mingw-w64-ucrt-x86_64-gccClang versão 19.1.6
pacman -S mingw-w64-ucrt-x86_64-clangVisual Studio C ++/C 2022
Git versão 2.46.0.windows.1
Sdl2.dll: 2.30.7
Faça: GNU faz 4.4.1
Ferramentas MSYS2/MINGW
Linux Mint 22
Diálogo de arquivo
Outro
GUI
Gráfico
| Linguagem | Projeto | |
|---|---|---|
| Nim | Compilador | IMGUIN, NIMGL_TEST, NIM_IMPLOT |
| Lua | Script | Luajitimgui |
| Zig , C Lang. | Compilador | Dear_bindings_build |
| Zig | Compilador | Imguinz |
| Nelua | Compilador | Neluaimgui |
| Python | Script | DearPyGui para binários do Windowsos de 32 bits |

| Linguagem | Projeto | |
|---|---|---|
| Nim | Compilador | Nim-plataformer/ sdl3_nim |
| Luajit | Script | Luajit-plataformer |
| Nelua | Compilador | Nelea-platformer |
| Zig | Compilador | Zig-plataformer |
error: assignment to ' char ** ' from incompatible pointer type ' const char * const* ' [-Wincompatible-pointer-types] type ConstCstring {. importc : const char *. } = cstring