公司动态
NAppGUI快速上手指南:10分钟在Windows/macOS/Linux编译并运行你的第一个桌面程序
NAppGUI快速上手指南10分钟在Windows/macOS/Linux编译并运行你的第一个桌面程序【免费下载链接】nappgui_srcSDK for building cross-platform desktop apps in ANSI-C项目地址: https://gitcode.com/gh_mirrors/na/nappgui_srcNAppGUI 是一个基于 ANSI-C 的跨平台桌面应用 SDK你只需要写一套 C 语言代码就能在 Windows、macOS、Linux 三个系统上编译出原生桌面程序完全不需要学习 C、Qt 或 Electron 那套复杂体系。对于想用最朴素的 C 语言做桌面开发的新手来说NAppGUI 几乎是最好的起点。本篇文章就是一份 NAppGUI 快速上手指南从环境准备、克隆源码、编译构建到运行示例10 分钟带你跑通三大平台编译并运行你的第一个桌面程序。NAppGUI是什么为什么用ANSI-C开发桌面应用NAppGUI 由 Francisco García Collado 开发2015 年至今当前版本 1.6.2采用 MIT 开源许可。它的核心设计理念是少即是多一套代码三端运行源码中通过src/osgui/、src/osapp/等平台适配层自动调用 WindowsGDI/Win32、macOSCocoa和 LinuxGTK的原生控件编译出的程序是真正的原生应用无需任何运行时或虚拟机。纯 C 无依赖包袱整个 SDK 用标准 ANSI-C 编写头文件统一从src/nappgui.h引入对 C 语言基础薄弱的开发者非常友好。自带常用功能模块除了 GUI还内置了 2D 绘图、几何计算、JSON 解析、HTTP 请求、3DOpenGL等模块桌面应用常用的能力基本都有覆盖。准备工作三个平台的开发环境与依赖清单在编译 NAppGUI 之前先把每个平台的环境装好。所有平台都依赖同一个构建工具CMake3.5 以上即可项目根目录的 CMakeLists.txt 有版本检查逻辑。Windows 环境安装 [Visual Studio]含 C 桌面开发组件编译器走 MSVC安装 [CMake]之后使用开发人员命令提示符Developer Command Prompt操作环境变量已自动配置好macOS 环境安装 Xcode含 Command Line Tools安装 CMake可通过 Homebrew 安装Linux 环境以 Ubuntu/Debian 为例需要先安装编译工具和 GTK、WebView、OpenGL 相关开发库sudo apt-get install build-essential git cmake sudo apt-get install libgtk-3-dev # GUI 工具包 sudo apt-get install libcurl4-openssl-dev # HTTP 支持 sudo apt-get install libwebkit2gtk-4.1-dev # WebView 支持 sudo apt-get install mesa-common-dev libglu1-mesa-dev libegl1-mesa-dev # OpenGL 支持最快的配置方法克隆NAppGUI源码仓库环境就绪后把源码仓库克隆到本地这一步在三个平台上完全一样git clone https://gitcode.com/gh_mirrors/na/nappgui_src cd nappgui_src仓库里已经包含完整的 SDK 源码、demo/目录下十几个可直接编译的示例项目以及tools/nrc/NAppGUI 自带资源编译器。注意项目根目录的 CMakeLists.txt 默认会同时构建所有 demo 示例如果想跳过示例、只编译 SDK可以在配置时把NAPPGUI_DEMO选项设为False。分平台编译步骤详解Windows 上编译NAppGUI打开开发人员命令提示符进入仓库目录后执行cmake -S . -B build cmake --build build --config Debug编译产物输出在build\Debug\bin\目录下每个 demo 会生成对应的.exe文件。macOS 上编译NAppGUI打开终端进入仓库目录后执行推荐用 Xcode 生成器方便在 Xcode 中调试cmake -G Xcode -S . -B build cmake --build build --config Debug每个 demo 会生成.app应用包位于build/Debug/bin/目录下。Linux 上编译NAppGUI打开终端进入仓库目录后执行cmake -S . -B build -DCMAKE_BUILD_TYPEDebug cmake --build build -j 4-j 4表示用 4 个线程并行编译机器配置好可以调大。产物同样位于build/Debug/bin/。运行你的第一个NAppGUI桌面程序编译完成后随便挑一个 demo 运行立刻就能看到效果平台运行命令Windows.\build\Debug\bin\Die.exemacOS./build/Debug/bin/Die.app/Contents/MacOS/DieLinux./build/Debug/bin/DieDie骰子、Bricks拼砖游戏、Products带表格和菜单的进销存示例、GuiHelloGUI 控件大合集都是很好的入门示例。尤其推荐先跑GuiHello它演示了按钮、列表、表格、选项卡、编辑器等几乎所有常用控件源码在demo/guihello/目录下配套资源图片放在demo/guihello/res/res_guihello/里。用10分钟手写第一个Hello World窗口看懂示例后不妨自己动手写一个。NAppGUI 的 Hello World 精简到极致核心源码就藏在 demo/hello/main.c全文只有 83 行#include nappgui.h typedef struct _app_t App; struct _app_t { Window *window; TextView *text; }; static Panel *i_panel(App *app) { Panel *panel panel_create(); Layout *layout layout_create(1, 3); Button *button button_push(); app-text textview_create(); button_text(button, Click Me!); layout_button(layout, button, 0, 1); panel_layout(panel, layout); return panel; } #include osapp/osmain.h osmain(i_create, i_destroy, , App)逻辑一目了然创建面板 → 放入按钮 → 挂到窗口 → 交给osmain启动。窗口、按钮、事件回调的 API 命名都很直观配合官方文档很容易上手。NAppGUI源码结构速览想深入学习的同学源码模块划分非常清晰全部位于src/目录下src/sewer/底层基础库内存、字符串、数学、类型src/core/核心容器与事件系统数组、哈希表、流、正则src/draw2d/跨平台 2D 绘图与字体、图像src/gui/跨平台 GUI 控件按钮、编辑框、表格等src/osgui/各平台原生控件适配层内有win/、osx/、gtk/子目录src/osapp/应用生命周期与主循环src/geom2d/2D 几何计算与碰撞检测src/inet/HTTP 请求等网络能力src/ogl3d/OpenGL 3D 渲染另外demo/目录下每个示例都带有独立的 [CMakeLists.txt]例如 demo/hello/CMakeLists.txt 里一行nap_desktop_app(HelloWorld NRC_NONE)就能生成一个桌面应用目标这也是 NAppGUI 自定义 CMake 宏的典型用法。新手常见问题与避坑提醒最后总结几个新手最容易踩的坑提前避开能省不少时间Linux 编译报错找不到 GTK绝大多数情况是没装libgtk-3-dev按上文依赖清单逐个补齐即可如果不需要 WebView 功能也可以在配置时把NAPPGUI_WEB设为False跳过 webkit 依赖。macOS 提示找不到编译工具先执行xcode-select --install安装命令行工具再执行cmake -G Xcode。Windows 建议用开发人员命令提示符普通 cmd 可能找不到 MSVC 编译器导致 CMake 配置失败。路径中避免中文和空格仓库路径含中文或空格可能在资源编译nrc阶段出问题放在纯英文目录最稳妥。只想编译 SDK 不想编译示例配置时加-DNAPPGUI_DEMOFalse即可大幅缩短编译时间。到这里你已经成功在 Windows、macOS、Linux 上编译并运行了第一个 NAppGUI 桌面程序也对 SDK 的目录结构和核心概念有了整体认识。接下来只需挑一个感兴趣的 demo 动手改一改很快就能体会到一套 ANSI-C 代码三端原生运行的快乐。祝编码愉快【免费下载链接】nappgui_srcSDK for building cross-platform desktop apps in ANSI-C项目地址: https://gitcode.com/gh_mirrors/na/nappgui_src创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考