首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

新的编译开关:生成源码依赖性报告

新的编译开关

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将来会出现有一个图形化的视觉呈现,生动完整地展现了大型工程中的代码依赖性关系,这个图可能会随着工程的规模而十分复杂,我们可以从这个图中看出来哪些模块需要进行重构,哪些模块之间具有强耦合性,这对于改善代码的结构十分有帮助。

所以,这应该是个好东西。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200816A02SVK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券