新的编译开关:生成源码依赖性报告
新的编译开关
C++20对生态系统的需求比以往任何时候都要多。 随着C++20 Modules特性的出现,编译器需要与项目系统紧密合作,以便为构建依赖关系收集提供丰富的信息,并使迭代构建更快地用于内循环开发。 编译器和项目团队已经确认了这种新的关系,并共同合作,我们在编译器工具集中新增了一个编译开关,这个开关可以为构建系统提供有用的信息:/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.json中,其文件内容如下所示:
此外,/sourceDependencies的使用并不仅限于C++,你可以在C语言编译单元中使用它。这个开关被设计为可以在多个源文件下和并发编译(/MP)场景下工作,具体可以参考编译器帮助文档。
请耐心等待
/sourceDependencies的输出内容将来可能会发生变化,并将根据C++生态系统的需求而变化。 我们希望能从实际项目部署中收集反馈,以便向WG21/SG15研究组提供反馈并完善P1689提案。 相应的文档也将进行更新以反映将来的更改。 我们鼓励用户利用“版本”字段来说明不断变化的性质,并确保正确解释依赖项输出中包含的信息。
现在就可以在最新版本的Visual Studio 2019 v16.7中试试这个新功能,说不定有意外的收获呢?
总结
我估计以后IDE将来会出现有一个图形化的视觉呈现,生动完整地展现了大型工程中的代码依赖性关系,这个图可能会随着工程的规模而十分复杂,我们可以从这个图中看出来哪些模块需要进行重构,哪些模块之间具有强耦合性,这对于改善代码的结构十分有帮助。
所以,这应该是个好东西。
- 下一篇: 为什么我们不建议暂停一个线程
- 上一篇: 官宣:AddressSanitizer新增x64支持
相关推荐
- 实战经验:__super关键字的使用
- Posted on 12月02日
- 为什么不能在气泡提示中防止超链接
- Posted on 12月20日
- 对话框管理器第九章:对话框中的自定义快捷键
- Posted on 08月23日
- 深度理解:CTreeCtrl展开和收起消息探究
- Posted on 08月12日
评论已关闭。