在Azure Sphere开发中使用CMake预设的预览

我们很高兴地宣布,VisualStudio16.10版本以及VisualStudio代码的CMake Tools版本1.7中提供了CMake预设预览支持。

null

埃里卡介绍说 CMake预设以及为什么要使用它们 ,这篇文章将重点介绍如何在VisualStudio、VS代码和GitHub操作中使用它们来实现整个开发团队和CI系统的一致构建设置。

蓝色球体 是一个全面的物联网安全解决方案,超出了本文的范围。azuresphere项目是基于CMake的,应用程序开发是用C语言进行的( 开始吧 这里)。

由于CMake预置仍在VS和VS代码中预览,它们还不是visualstudio或VS代码创建的azuresphere项目的一部分。在未来,他们将是,以及官方的Azure球体样本的一部分。为了收集关于在Azure Sphere中使用CMake预设的早期反馈,我已经准备好了 Azure Sphere blink项目的GitHub模板存储库 配置了CMake预设,您可以使用它来关注本文。

GitHub模板示例

GitHub模板存储库 是一种从现有回购创建新项目的方法,而不是启动fork。这对于提供样本来启动一个新项目是非常好的,因为在这个项目中没有克隆的意图来向上游发送更改。您可以直接在GitHub上创建自己的repo,方法是选择“使用此模板”,然后在本地克隆它。或者你可以用 GitHub cli 从本地模板和GitHub上一步创建自己的repo。

gh repo create azblink --template https://github.com/robotdad/AzureSphereBlink

按照上面命令的提示,它将在GitHub帐户中创建一个名为azblink的repo,并创建它的本地副本。

CMake预设文件

此项目中的CMakePresets.json文件具有用于在Windows和Linux上调试和发布版本的预设。这两个预设都继承自公共基本配置。

"name": "Base",
"description": "Base configuration using Ninja generator",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"architecture": {
    "value": "arm",
    "strategy": "external"
},
"cacheVariables": {
    "AZURE_SPHERE_TARGET_API_SET": "latest-lts"
}

此配置标记为隐藏,这意味着无法直接使用,它仅用于为其他预设提供公用设置。我们可以看到,它被设置为使用Ninja作为构建工具,并且输出目录在这里被配置为从所使用的配置派生。我们还可以看到为其配置项目的azuresphereapi集的变量集。

另外还有两个隐藏的预设:Windows Base和Linux Base。它们继承自上述基本配置,并分别为azuresphere工具链文件设置CMake cache变量。该变量使用一个环境变量,该环境变量在每个相应部分中为默认的azurespheresdk安装位置设置。您还将注意到一个vendor部分,它指定了一个主机操作系统。visualstudio和VS代码使用它,当配置选项位于该操作系统上时,只显示该选项。这减少了选择无效配置的可能性。

Visual Studio

如果在VisualStudio中打开此项目,它将自动选择Windows调试配置,并准备使用隐式默认生成配置进行生成。launch.vs.json中的Visual Studio的启动配置作为异常签入到.vs文件夹下,以便预配置调试。您不需要修改此文件。

请参阅我们的文档以了解有关如何 使用Visual Studio中的CMake预设配置和生成 .

VS代码

如果在VS代码中打开此项目,系统将提示您选择要使用的配置。选择“调试”。当settings.json被预配置为使用CMake工具扩展时,就会发生这种情况。生成项目时,系统将提示您输入生成配置,选择默认值,这是所选配置中隐含的。要进行调试,您需要连接一个Azure Sphere板。

此项目确实包含devcontainer定义,因此可能会提示您在devcontainer中打开。这是支持的,所以请随意尝试,它将完全按照上面的工作,包括调试。

由于存在devcontainer定义,因此也可以在GitHub代码空间中打开此项目。导航到您创建的回购并选择“代码”按钮上的下拉列表,然后在“代码空间”中打开。在web界面中,可以构建项目。如果从VS代码连接到Codespace,还可以调试到本地连接的设备。

请参阅我们的文档以了解有关 如何使用VS代码配置和构建CMake预设 .

GitHub操作

此项目已预配置为使用GitHub操作。你呢 可以在此处了解有关如何将GitHub操作用于Azure Sphere项目的更多信息 . 由于CMake预设是新的,因此与其他示例和当前指南不同的是对CMake的调用。如果您查看.devcontainer/Dockerfile,您将看到它是一个具有三个目标的多级定义:dev、debug build和release build。dev阶段只是官方的azuresphere容器映像。 这用于交互式devcontainer。其他两个阶段继承dev阶段作为基础。每个阶段都将repo复制到容器中,然后使用debug或release预置运行CMake,然后将适当的入口点设置到生成的缓存以开始构建。

查看.githubworkflowsci.yml文件,您将看到官方指南中的一些小改动,这些改动是通过使用CMake预设来使用在构建输出中创建的路径。

如果您从一开始就这样做,并从模板存储库创建了自己的repo,那么您应该已经有了一个成功的构建。转到GitHub上的repo并导航到Actions选项卡。您应该看到初始提交的完整工作流。如果您选择将有一个带有azuresphere映像包的工件,它可以直接部署到设备上,也可以作为 部署到设备组 .

下一步是什么?

CMake预置visualstudio中的集成和visualstudio代码仍在预览中。我们将继续添加到我们的集成中,并在未来版本的VisualStudio和CMake Tools extension for VS代码中处理您的反馈。

在visualstudio中,归档bug或建议功能的最佳方法是使用 发送反馈 IDE右上角的按钮。看到了吗 Visual Studio反馈选项 更多信息。

在VS代码中,提交bug或建议特性的最佳方法是在 扩展的GitHub存储库 .

我们很想了解您的团队是如何为Azure Sphere或其他应用程序采用CMake预设的。如果您有反馈或成功案例要分享,请联系我们 cmake@microsoft.com . 你也可以通过Twitter联系我们( @视觉 ).

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0 分享