C++ 20对生态系统的需求比以往任何时候都要多。随着视界上的C++ 20个模块,编译器需要与项目系统紧密合作,以便提供丰富的信息来构建依赖关系集,并使迭代构建更快地用于内部循环开发。编译器和项目团队已经确认了新的关系,并共同合作,为编译器工具集带来了一个新的切换,它可以为构建系统提供有用的信息: /sourceDependencies
.
源依赖项报告
编译器工具集的新开关使编译器能够为其编译的任何给定翻译单元生成源代码级依赖关系报告。此报告以JSON文件的形式输出,您可以这样生成它:
$ cl /Yupch.pch /FIpch.h /std:c++latest /experimental:module /module:reference m=m.ifc /headerUnit other.h=other.h.ifc /sourceDependencies main.json main.cpp
注意使用 /sourceDependencies main.json
.
给定以下程序:
// main.cpp #include "header.h" import m; import "other.h"; int main() { }
生成到的依赖关系报告 main.json
可能看起来像:
{ "Version": "1.0", "Data": { "Source": "C:...main.cpp", "PCH": "C:...pch.pch", "Includes": [ "C:...header.h" ], "Modules": [ "C:...m.ifc", "C:...other.h.ifc" ] } }
此外,使用 /sourceDependencies
不仅限于C++,还可以用于编译单元作为C编译!此外,该开关被设计为用于多个文件和场景下 /MP
. 请看照片 文档页 有关这些场景的更多信息。
敬请期待
这个 /sourceDependencies
输出是变化的,并且将根据C++构建系统生态系统的需要而进化。其目的是收集实地部署的反馈意见,以便向21/SG15工作组提供反馈意见,并完善提案 1689页 . 文件将更新,以反映未来必要的变化。我们鼓励用户利用 Version
字段来说明不断变化的性质,并确保对依赖项输出中包含的信息进行适当的解释。
我们敦促你出去尝试使用MSVC的新产品 /sourceDependencies
开关。Visual Studio 2019版本16.7现在可以通过 Visual Studio 2019下载 第页。
一如既往,我们欢迎您的反馈。欢迎通过电子邮件发送任何评论 visualcpp@microsoft.com 或通过 推特@visualc . 另外,请随时在Twitter上关注我 @星际克隆 .
如果您在VS 2019中遇到MSVC的其他问题,请通过 报告问题 选项,从安装程序或VisualStudioIDE本身。如需建议或错误报告,请通过 开发命令。