65.9K
CodeProject 正在变化。 阅读更多。
Home

U++ 2022.2 入门指南

starIconstarIconstarIconstarIconstarIcon

5.00/5 (37投票s)

2020 年 9 月 1 日

CPOL

8分钟阅读

viewsIcon

88971

安装和初步了解 U++ 平台。

目录

我为什么要关心这个?

U++ 是一个开源的 C++ 框架/开发环境,目前最适合拥有宏大项目的小团队,这些项目从事“真正的”工作,例如设计建筑的工程应用、风电场模拟、销售点终端、SQL 客户端-服务器办公日程、商业销售或复杂的网站后端(是的,我在这里列出的都是真实世界的例子)。然而,它也能很好地适用于最小的实用工具,如这里所示。

它围绕一些相当极端的原则进行设计,以最大限度地提高开发人员的生产力和性能。

虽然 C++ 语言的复杂性无法被抽象掉(但为了同时实现生产力和性能目标,这绝对是必需的),但经验丰富的 U++ 程序员可能会发现,在 U++ 中完成任务比使用像 Python 这样“易于使用”的脚本语言更有效率,而这正是我们的终极目标。

与此同时,U++ Core 库在字符串操作和映射等领域提供了比标准 C++ 库好约 3 倍的性能,这些领域在许多场景中构成了大部分负载(例如,考虑处理 JSON 或解析文件)。

除此之外,它还有模块化的源码系统和相应的构建系统,这使得大型项目的管理变得简单得多。

一个事实可以总结这一切:在调试模式下,完全重建 U++ 开发环境 (TheIDE) 和所有框架库仅需 45 秒(实际上,你可以在安装后立即尝试,因为 TheIDE 的源码已包含在发布版本中)。

而且,它的一个演示示例中还有一张可爱的猫咪图片

U++ 目前支持 WindowsX11MacOS 平台。

从哪里下载

稳定版本可以在 https://sourceforge.net/projects/upp/ 找到。

U++ 目前以 LZMA 压缩存档的形式发布(Windows 为 .7z,POSIX / MacOS 为 .xz)。

Linux、FreeBSD 和 OpenSolaris 安装

在 Linux 中,U++ 必须为目标发行版编译,同时满足依赖关系。然而,对于大多数流行的 Linux 版本,这个过程是快速且基本自动化的。解压存档后,cdupp 文件夹并运行 ./install 脚本。

该脚本应该能够检测到你的 Linux 发行版,并建议安装所需依赖项的命令。如果你不介意分享 sudo 密码,它甚至可以为你安装这些依赖项,或者你也可以将命令复制到另一个终端自行运行。同样的 ./install 过程也应该能顺利用于 FreeBSD 和 OpenSolaris 派生的系统。

之后,开发环境将从源代码编译,在现代 x86 CPU 上这应该需要几分钟(在树莓派 4 上大约需要 15 分钟)。

之后,会生成 ./theide 二进制文件,可以立即用该脚本启动,你应该会看到类似这样的界面:

注意:除非你将 theide 二进制文件移动到别处,否则它不会在 upp 目录之外写入任何内容。一旦你对 U++ 感到厌倦,只需删除 upp 目录即可。

在此之后,TheIDE 在所有平台上的工作方式基本相同。

OpenBSD 特别说明

在 OpenBSD 中,你需要在运行 ./install 脚本之前通过运行以下命令手动解决依赖关系:

pkg_add bash pkgconfig

(只要你在安装 U++ 之前已经安装了桌面环境,这应该就能正常工作。)

还需要将 /etc/login.conf 中允许的内存大小增加到:

default:\
    :datasize-max=4096M:\
    :datasize-cur=4096M:\
    :stacksize-cur=512M:\

否则编译器将耗尽内存。之后,请遵循 Linux 的安装说明。

Windows

在 Windows 中,TheIDE 是预编译的,并且 U++ 自带所有需要的依赖项,包括 clang 编译器。只需解压存档并启动 theide.exe

再次强调,U++ 是自包含的,不会在 upp 目录之外写入任何内容。启动 theide.exe 后,你应该会看到与 Linux 基本相同的对话框:

MacOS

在 MacOS 中,TheIDE 在存档中是预编译的,但 U++ 需要 C++ 工具链来构建应用程序。你可以在这里找到如何安装工具链的说明。

其他一些工具和库可以使用 homebrew 安装。推荐安装以下软件包(因为在某些情况下可能需要它们):openssllibssh2

要启动 TheIDE,你只需从解压的存档中启动 theide.app

现在你应该会看到与其他平台基本相同的对话框:

选择主包对话框

在不深入太多细节的情况下,我们现在将描述你在对话框中看到的内容。

Assembly (程序集) 基本上是一个用于查找源代码模块的目录列表。这种模块的术语是 package (包)。包基本上是一个包含 C++ 源文件和一些元信息的目录,这些元信息描述了如何编译该包及其对其他包的依赖关系。

你在对话框中看到的 Assembly 列表是可编辑的,但在你首次启动 TheIDE 时,它会根据发布版本附带的源码创建一个预定义的程序集集合。其中,examples 主要包含更复杂的演示示例,以“展示 U++ 的强大功能”(以及一些猫咪图片),而 reference 包含近 200 个示例,展示了 U++ 框架的各个方面。tutorial 是 U++ 网站上几个多步骤教程附带的示例。uppsrc 是包含基本 U++ 库、实用工具以及 TheIDE 自身源代码的程序集。MyApps 是为你初次体验 U++ 而准备的程序集。

除了“官方”模块外,U++ 的发布版本还附带了大量由社区贡献的内容,称为 bazaar目前,bazaar 代码的质量和实用性差异很大,请谨慎使用。examples-bazaar 是这些包的演示示例,而 MyApps-bazaar 是为你的项目准备的程序集,其中也包含了 bazaar 包。

尝试第一个示例

现在让我们加载、编译并运行一个示例。选择 examples,然后在包列表中选择 Days(当然,你也可以选择任何其他示例,但接下来的截图展示的是 Days)。TheIDE 将加载该项目,你应该会看到这个界面:

在左上角,是一个包列表。Days 是你选择的包(它是主包),列出的其他包是它的直接或间接依赖项。在该列表区域下方是当前选定包的文件列表。请注意,这意味着 U++ 项目的所有源文件,包括 U++ 框架的所有源文件,通常只需点击两次鼠标即可访问(实际上,你需要小心,不要通过编辑损坏框架文件)。

窗口中央显然是当前文件的源代码。右边是所谓的“导航器”——这是一个基于对整个项目 C++ 源代码分析的搜索工具。

要编译并运行项目,请按 Ctrl+F5 或在调试菜单中选择“执行”。

现在整个项目将进行编译,然后应用程序将被启动。

注意:对于给定的配置,你第一次这样做时,U++ 需要编译整个框架,所以预计最多需要一分钟才能完成。之后,仅对主包进行更改后的下一次编译应该会快得多。

将 TheIDE 安装到 Linux 桌面菜单

此部分仅适用于 Linux。现在 TheIDE 正在运行,是时候通过调用此菜单项将其安装到你的桌面菜单中了:

这会创建 ~/.local/share/applications/theide.desktop 文件,它应该会将 TheIDE 添加到你的 Linux 桌面的编程子菜单中。

如何开始一个新项目

要开始编写你自己的代码,你应该选择 MyApps 程序集,它被重新配置为将你新创建的包放置在 MyApps 目录中。

现在按下“新建包”按钮,你将进入“创建新包”迷你向导。

对于本次测试,我们将选择 U++ Basic CtrlLib application,这基本上意味着一个没有为主窗口类预生成代码的 GUI 应用程序。所以它只是为我们的主包添加了正确的依赖项,并提供了非常精简的样板代码。为了完成本节内容,我们现在要做的就是将

PromptOK("Hello world!");

插入到 GUI_APP_MAIN 块中

然后像处理 Days 示例一样调用“执行

恭喜,你刚刚编译了你的第一个 U++ 应用程序!

UppHub

U++ 2021.1 的新功能是 UppHub,这是一个允许轻松集成第三方模块(库)到 U++ 项目中的系统。这类似于 PyPI (用于 Python)、NuGet (用于 C#) 或 vcpkg (用于 C/C++) 这样的包管理系统。得益于现有的 U++ 模块化系统,TheIDE 中的集成真正做到了无缝衔接。

通过包选择对话框中的按钮可以访问 UppHub 对话框

或者通过菜单项“设置 / UppHub..”

安装按钮会将源代码仓库克隆到一个对 U++ 包系统可见的位置,这使得你能够立即在项目中使用已安装的包。请查阅完整的 UppHub 文档,链接在这里

 

下一步是什么

如果你已经读到这里,那么你可能对 U++ 有了些许兴趣,并想知道接下来该做什么。嗯,推荐的熟悉 U++ 的路径是查看并尝试参考示例:

这些是小段代码片段,演示了 U++ 框架的大部分方面,以及它们预期的使用方式。只需浏览列表,加载你感兴趣的内容并运行它。当然,还有一个网站,上面有文档教程论坛,那里的人们很乐意解决你所有关于 U++ 的问题。

 

有用链接

历史

  • 2020年9月1日:初始版本
  • 2020年9月15日:修复格式不一致问题
  • 2020年10月8日:添加目录
  • 2020年10月21日:根据 2020.2 版本信息更新
  • 2021年5月23日:为 2021.1 版本更新
  • 2021年5月27日:为 2021.2 版本更新
© . All rights reserved.