所在的位置: C++ >> C++介绍 >> VisualStudio在CMake工程

VisualStudio在CMake工程

陕西治疗白癜风的医院 http://pf.39.net/bdfyy/bjzkbdfyy/190801/7349173.html

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

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

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

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

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

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

CMakePresets:

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

CMakeSettings:

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

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

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

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

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

并在“VisualC++”类别中选择“C++ModuleInterfaceUnit(.ixx)”模板:

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

导出和使用C++模块

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

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

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

总结

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




转载请注明:http://www.aierlanlan.com/rzfs/950.html