关于新的 C++ 插件的更新
随着新的 C++ 插件越来越受到早期采用者的关注,我们希望更新大家自我们之前的 介绍新的 C++ 插件 文章发布以来的进展。
在过去的几个月里,我们看到了几个新功能、新的和扩展的文档以及 IDE 支持的改进。
如果您想提供反馈,请 与我们联系。
新功能
自上次博客文章发布以来,我们引入了三个主要的新功能:C++ 项目的入门模板、目标机器建模和源依赖项。
C++ 项目的入门模板
现在开始一个新的 C++ 项目比以往任何时候都更容易。
借助 C++ 启动模板,您可以使用 init
任务(由构建初始化插件添加) 初始化一个 C++ 应用程序 或 C++ 库。以下是如何使用 Kotlin DSL 和构建初始化插件初始化 C++ 应用程序的示例。
操作系统和架构支持
现在,原生项目也可以在 C++ 组件上配置操作系统和架构(也称为目标机器)。
每个组件脚本块(例如 application、library、unitTest)都可以配置 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, x86}
、{release, x86}
和 {release, x86-64}
可以分别通过 linkDebugX86
、linkReleaseX86
和 linkReleaseX86-64
任务进行构建。
在其他操作系统上,Gradle 不会构建任何内容,因为没有目标机器与构建主机兼容。值得注意的是,前面提到的任何任务都不会被创建,因为变体不可构建。相反,调用 assemble 任务只会打印一条信息性消息,如以下屏幕截图所示。
源依赖项
源依赖项的支持是一个直到最近才公布的功能。您可以在 Introducing source dependencies 文章中了解所有相关信息。
简而言之,源依赖项允许 Gradle 直接从源代码使用其他项目作为依赖项。对于 C++ 开发人员来说,从源代码构建依赖项是一种常见的做法。Gradle 会处理构建消费者之前构建源代码所需的所有连接。
如果 源依赖项构建是 Gradle 构建,则体验将类似于组合 包含构建。另一方面,如果 源依赖项由另一个构建系统构建,例如 CMake,则 Gradle 可以注入配置代码以执行正确的构建命令并将工件映射到 Gradle 构建中。
文档
在通往 Gradle 5.5 的道路上,我们发布了许多其他示例,展示了使用 C++ 插件已经可以实现的功能。
其中一些示例展示了有趣的用例,例如 与 CMake 集成 和 如何自动从供应商网站(例如 Clang)下载和使用工具链。
在 Gradle 5.5 中,我们发布了全新的 C++ 文档。我们建议您阅读 构建 C++ 项目 和 测试 C++ 项目 章节以开始使用。
我们还很高兴地介绍了 每个原生插件的参考章节,以及 Visual Studio 和 Xcode 插件 的参考章节。
IDE 支持
Visual Studio 插件 支持为使用新的 C++ 插件的项目生成解决方案文件。
JetBrains 基于他们著名的从 IntelliJ 导入的原生 Gradle,并发布了 支持使用工具 API 直接在 Clion 中打开 Gradle 原生项目。
体验与用户预期一致。您可以在编写代码时构建、调试并享受代码补全功能。
新的 C++ 插件还支持使用 Xcode 进行 IDE 开发。
提供反馈
这些插件仍在开发中,存在一些限制。
例如,调试性等模型元素目前尚不支持任何配置。您需要使用编译器/链接器标志。
我们将继续改进这些插件,使其稳定,并最终弃用软件模型插件。
请试用这些插件,并告诉我们您的想法。最简单的入门方法是克隆 原生示例存储库 并按照说明进行操作。我们的示例使用 Gradle 夜间构建,因此您将在其中看到最新的开发成果。
我们很乐意听取您对哪些功能有效、哪些功能令人困惑以及哪些功能缺失会阻碍您使用 Gradle 构建 C++ 软件的意见。您也可以在 Gradle 论坛 上留下反馈,或在 Gradle 原生 GitHub 存储库中提出问题。