新 C++ 插件更新

目录

简介

随着新的 C++ 插件越来越受到早期采用者的关注,我们希望向大家更新自我们之前的新 C++ 插件介绍博文发布以来的进展。

在过去的几个月中,我们看到了几个新特性、新的和扩展的文档以及 IDE 支持方面的改进。

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

新特性 #

自上一篇博文发布以来,我们引入了三个主要的新特性:C++ 项目的入门模板、目标机器建模和源代码依赖。

C++ 项目的入门模板 #

现在,启动一个新的 C++ 项目比以往任何时候都更容易。

感谢 init 任务(由 Build Init Plugin 添加)的 C++ 入门模板,您可以初始化一个 C++ 应用程序C++ 库。这是一个使用 Kotlin DSL 和 Build Init Plugin 初始化 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 任务编译 debug x86-64 变体,也称为开发二进制文件。

Building C++ Application on Windows

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

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

Building C++ Application on macOS

源代码依赖 #

对源代码依赖的支持直到最近才是一个未宣布的特性。您可以在介绍源代码依赖博文中阅读所有相关信息。

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

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

文档 #

在通往 Gradle 5.5 的道路上,我们发布了更多示例,演示了使用 C++ 插件已经可以实现的功能。

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

Integration with CMake

在 Gradle 5.5 中,我们发布了所有新的 C++ 文档。我们建议阅读构建 C++ 项目测试 C++ 项目章节以开始使用。

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

IDE 支持 #

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

Visual Studio IDE

JetBrains 在其著名的从 IntelliJ 导入的原生 Gradle 的基础上构建,并发布了支持直接在 Clion 中使用 Tooling API 打开 Gradle 原生项目

该体验正如用户所期望的那样。您可以在编写代码时进行构建、调试和享受代码完成

Clion IDE

新的 C++ 插件还支持使用 Xcode 进行 IDE 开发。

提供反馈 #

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

例如,调试性等模型元素尚不允许任何配置。您需要求助于使用编译器/链接器标志。

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

请试用这些插件,并告诉我们您的想法。入门的最简单方法是克隆原生示例仓库并按照说明进行操作。我们的示例使用Gradle 每夜构建版,因此您将看到最新的和最出色的开发成果。

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

讨论