IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> VisualStudio: 在CMake工程中使用C++模块 -> 正文阅读

[开发工具]VisualStudio: 在CMake工程中使用C++模块

自从我们宣布微软C++编译器和Visual Studio开始支持C++模块以来,我们已经看到了开发者社区的热烈反响。从那个时候开始,就已经有人问什么时候可以支持CMake工程。
今天,我很高兴地宣布,Visual Studio 2022 17.2 预览版2已经包含了一项实验性更新,用来在CMake工程中支持C++模块。在这个早期版本中,你必须使用Visual Studio(MSBuild)代码生成器。如果你希望尝尝鲜,则可以下载最新的预览版本。

C++模块是C++20中的一项新特性。它可以帮助你划分代码,加快编译时间,并且可以和现有代码一起无缝地结合。如果你对C++模块感兴趣的话,可以参考Visual Studio中的C++模块之旅这篇文章。它探讨了如何以及何时使用C++模块,以及Visual Studio如何帮助你编写C++模块代码。

在CMake工程中使用C++模块

虽然 CMake 对 Visual Studio 中模块的支持仍处于早期试验阶段,但使用它很简单。 你不需要在你的 CMake 工程中做任何特别的事情。 只需要确保你已启用 C++20 语言标准。 从这个预览版开始,我们的 CMake 工程模板将为你完成这项工作,但如果你正在使用现有项目,则需要将其添加到你的 CMakeLists.txt 中,例如:
set_property(TARGET $TargetName PROPERTY CXX_STANDARD 20)

注意:启用 C++20 需要 CMake 3.12 或更高版本。 Visual Studio 附带最新版本的 CMake,但如果你跨操作系统使用此项目或需要使用旧版本的 CMake,则可能需要考虑这一点。

你还需要确保将 Visual Studio 生成器与 CMake 一起使用。 我们计划将来支持其他的代码生成器,例如 Ninja,但目前尚不可用。 Ninja 是在 Visual Studio 中处理 CMake 项目时的默认生成器,因此你需要修改项目的 CMakePresets.json 或 CMakeSettings.json 文件来更改这一设置。

CMake Presets:

如果你的工程使用 CMake Presets,请在 CMakePresets.json 中找到“windows-base”配置预设。 它将具有最有可能设置为“Ninja”的“generator”属性。 将其更新为下图中的设定:

CMake Settings:

如果你的工程使用 CMake 设置,则可以打开 CMakeSettings.json 编辑器并将生成器设置(在高级下)更改为“Visual Studio 17 2022:”

你需要为每个工程的配置执行此操作。

至此,选择了 Visual Studio 生成器并为你的编译目标启用了 C++20 语言标准,你就可以在工程中使用C++模块了。

在 CMake 工程中创建C++模块

要将C++模块添加到你的工程中,只需右键单击任何文件夹并选择“添加新项目:”

并在“Visual C++”类别中选择“C++ Module Interface Unit (.ixx)”模板:

如果你使用的是 Targets View,那就更容易了。 只需在任何目标的上下文菜单中单击“添加 -> 新模块…”:

导出和使用C++模块

创建模块接口 (.ixx) 文件后,你就可以导出函数、类和结构。 下面的示例定义了一个名为 Printers 的简单模块并导出一个结构:

定义了模块之后,其他源文件和模块接口就可以使用 import 关键字来使用它。 可以导入在当前目标或其任何导入中声明的任何模块。 例如,下面的“PrintVector.cpp”使用了我们上面定义的打印机模块:

你可以用 C++ 模块做很多事情。 要了解更多信息,我建议阅读 Visual Studio 中的 C++ 模块之旅,其中详细介绍了如何使用模块。 例如,可以将模块接口从它们的实现中分离出来。

总结

老乡,别走。
我知道,之前你吃过COM的亏,但这次真的不一样,C++模块是C++标准委员会制定的标准,没那么容易淘汰。
这波咱不亏。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《C++ Modules in CMake with Visual Studio》

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:47:16  更:2022-03-24 00:48:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:22:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码