原文地址:devblogs.microsoft.com/cppblog/int…
原文作者:devblogs.microsoft.com/cppblog/aut…
发布时间:2020年8月13日
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"; #include "header.h
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++构建系统生态系统的需求而变化。其目的是收集现场部署的反馈,以便向WG21/SG15研究小组提供反馈,并完善P1689提案。文件将被更新以反映未来必要的变化。我们鼓励用户利用Version字段来说明不断变化的性质,并确保依赖性输出中包含的信息得到适当的解释。
我们敦促您出去尝试使用MSVC的新/sourceDependencies开关。Visual Studio 2019的16.7版本现在可以通过Visual Studio 2019下载页面获得。
一如既往,我们欢迎你的反馈。欢迎通过电子邮件 visualcpp@microsoft.com 或通过 Twitter @visualc 发送任何评论。此外,也欢迎在Twitter上关注我@starfreakclone。
如果您在VS 2019中遇到MSVC的其他问题,请通过报告问题选项让我们知道,无论是从安装程序还是Visual Studio IDE本身。对于建议或错误报告,请通过DevComm告诉我们。
通过( www.DeepL.com/Translator )(免费版)翻译