关于新的 C++ 插件的更新

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

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

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

新功能

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

C++ 项目的入门模板

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

借助 C++ 启动模板,您可以使用 init 任务(由构建初始化插件添加) 初始化一个 C++ 应用程序C++ 库。以下是如何使用 Kotlin DSL 和构建初始化插件初始化 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 变体,也称为开发二进制文件。

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++ 文档。我们建议您阅读 构建 C++ 项目测试 C++ 项目 章节以开始使用。

我们还很高兴地介绍了 每个原生插件的参考章节,以及 Visual Studio 和 Xcode 插件 的参考章节。

IDE 支持

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

Visual Studio IDE

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

体验与用户预期一致。您可以在编写代码时构建、调试并享受代码补全功能。

Clion IDE

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

提供反馈

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

例如,调试性等模型元素目前尚不支持任何配置。您需要使用编译器/链接器标志。

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

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

我们很乐意听取您对哪些功能有效、哪些功能令人困惑以及哪些功能缺失会阻碍您使用 Gradle 构建 C++ 软件的意见。您也可以在 Gradle 论坛 上留下反馈,或在 Gradle 原生 GitHub 存储库中提出问题。

讨论