微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C构建设置以忽略注释中的更改

是否可以以这样的方式设置构建链,以便忽略注释(或空格)中的任何更改?例如,每当头文件中的注释被更改时,包括它的每个源文件都被重新编译,即使完全不必要.

当预处理器完成从修改文件删除注释时,构建链可以首先检查输出是否实际改变.如果没有,它应该像文件本身没有改变一样.

我使用Visual Studio 2010 btw.

编辑:@MikeSeymour,VS的cl.exe有一个切换/ Gm进行最小的重建.它没有很好的记录,但我认为这有点要我做.但是它与使用多个内核的/ MP交换机不兼容.在我的双核(w /超线程)上,/ Gm将需要跳过平均4个单位中〜3个的编译.虽然我觉得是这样的,但我甚至不知道如何评估/ Gm是否值得.

解决方法

是.您必须拥有构建系统,如果某些谓词为true,则可以触发构建事件.你想要的是一个谓词,说“这个文件以一种语义有趣的方式改变了”.

这种谓词的良好近似存在,使用我们的SmartDifferencers系列工具的形式,比较源代码文件,使用源代码结构的深层知识(例如生产解析器).特别是,SmartDifferencer会根据对语言结构的更改(例如标识符,语句,声明,块)和合理的编辑操作(插入,替换,删除,移动,重命名,重命名等)显示代码的更改. ).它不对布局或评论感兴趣(除非你强制它).所以很容易得到SmartDifferencer来判断一个代码文件是否改变了一些除了注释或空格之外的东西. SmartDifferencers存在各种各样的语言.

现在,你如何让构建系统进行合作? Unix在谓词上创建触发器,但不是这样;它实际上是根据与目标相比的文件日期的新近触发实体的构建事件.如果SmartDifferencer发现有趣的区别,则可以通过制作这样一个文件来依赖“changed_signal”文件来伪造它.

原文地址:https://www.jb51.cc/c/114758.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐