新 C++ 插件更新

目录

引言

随着新的 C++ 插件越来越受到早期用户的关注,我们希望在上次发布 “Introducing the new C++ plugins” 博文之后,向大家更新它们的进展情况。

在过去的几个月里,我们增加了一些新功能、新的和扩展的文档,以及对 IDE 支持的改进。

如果您想提供反馈,请 联系我们

新功能 #

自上次博客文章发布以来,我们推出了三项主要新功能:C++ 项目的入门模板、目标机器建模和源代码依赖。

C++ 项目的入门模板 #

现在,开始一个新 C++ 项目比以往任何时候都更加容易。

得益于 Build Init 插件添加的 init 任务的 C++ 入门模板,您可以初始化一个 C++ 应用程序C++ 库。以下是使用 Kotlin DSL 和 Build Init 插件初始化 C++ 应用程序的示例。

Starting C++ Application with the `init` task

操作系统和架构支持 #

原生项目现在还可以配置 C++ 组件上的操作系统和架构(也称为目标机器)。

每个组件脚本块(例如 applicationlibraryunitTest)都可以配置 targetMachines 属性。配置的目标机器将参与与构建主机兼容的机器的 构建变体。例如,在 Windows 机器上对 targetMachines 进行以下配置,将为 x86 和 x86-64 架构生成专用任务。

plugins {
    id "cpp-application"
}

application {
    targetMachines = [machines.windows.x86, machines.windows.x86_64]
}

在 Windows 机器上,将为 x86 和 x86-64 架构创建所有任务的一个变体。如下面的屏幕录像所示,assemble 任务编译 x86-64 的 debug 变体,也称为开发二进制文件。

Building C++ Application on Windows

其他变体 {debug, x86}{release, x86}{release, x86-64} 分别可以通过 linkDebugX86linkReleaseX86linkReleaseX86-64 任务构建。

在其他操作系统上,Gradle 不会构建任何内容,因为没有目标机器与构建主机兼容。值得注意的是,前面提到的任务都不会被创建,因为这些变体无法构建。相反,调用 assemble 任务将只打印一条信息性消息,如以下屏幕录像所示。

Building C++ Application on macOS

源代码依赖 #

源代码依赖支持直到最近才被宣布。您可以在 Introducing source dependencies 博文阅读所有相关内容。

简而言之,源代码依赖允许 Gradle 直接从源代码使用其他项目作为依赖项。C++ 开发者从源代码构建依赖项是一种常见做法。Gradle 负责在构建使用者之前构建源代码所需的所有连接。

如果 源代码依赖构建是 Gradle 构建,那么体验将类似于复合 包含的构建。另一方面,如果 源代码依赖项由另一个构建系统(例如 CMake)构建,Gradle 可以注入配置代码来执行正确的构建命令,并将工件映射到 Gradle 构建。

文档 #

在 Gradle 5.5 的开发过程中,我们发布了更多示例,展示了 C++ 插件已实现的各种功能。

其中一些示例展示了有趣的用例,例如 与 CMake 集成 以及 如何自动下载和使用来自供应商网站(如 Clang)的工具链

Integration with CMake

在 Gradle 5.5 中,我们发布了所有新的 C++ 文档。建议阅读 Building C++ ProjectsTesting C++ Projects 章节以开始。

我们也很高兴推出 每个原生插件的参考章节 以及 Visual Studio 和 Xcode 插件 的参考章节。

IDE 支持 #

Visual Studio 插件 支持为使用新 C++ 插件的项目生成解决方案文件。

Visual Studio IDE

JetBrains 基于其从 IntelliJ 导入的原生 Gradle,发布了 在 Clion 中直接使用工具 API 打开 Gradle 原生项目 的支持。

用户体验正如预期一样。您可以构建、调试并享受编码时的代码补全。

Clion IDE

新的 C++ 插件也支持 Xcode 的 IDE 开发。

提供反馈 #

这些插件仍在开发中,并且存在一些限制。

例如,模型元素(如可调试性)目前还不允许进行任何配置。您需要依赖于使用编译器/链接器标志。

我们将继续改进这些插件,使其稳定,并最终弃用软件模型插件。

请试用这些插件并告诉我们您的想法。开始的最佳方式是克隆 native samples repository 并按照说明进行操作。我们的示例使用 Gradle nightly build,因此您将在其中看到最新和最棒的开发。

我们很乐意听取您认为哪些方面做得好,哪些方面令人困惑,以及缺少哪些内容会阻碍您使用 Gradle 构建 C++ 软件。您也可以在 Gradle 论坛 上留下反馈,或在 Gradle native GitHub 存储库上提出问题。

讨论