经过近十年的C#和VC ++编码,我回到了linux-g ++-make-emacs环境。
试图刷新我写的一个make文件的记忆我没有太多问题,但我偶然发现了以下问题,我承认我不记得我过去如何解决它:
假设一个特定的.cpp文件与其他几个头文件有一些依赖关系(将其相应的头文件放在一边易于处理)...检测某些.h被更改的最佳方法是什么?
我当然不喜欢将它们放在我的目标 - 依赖列表中的想法,因为这是一个手动且容易出错的过程!
当答案发生变化时,简单的答案当然是建立清洁,但我无法回想起标准方式是什么......
在VC ++中我没有必要处理这个问题,因为IDE非常擅长处理依赖...
答案 0 :(得分:6)
看看automated dependencies。带有-M -MD -MT等标志的gcc将解析您的文件并计算依赖关系。将它们传递给sed。谷歌会发现很多例子。
答案 1 :(得分:2)
deinst和idimba让你走在正确的轨道上。要了解您可能遇到的潜在陷阱以及如何避免这些陷阱,请查看本文。
答案 2 :(得分:1)
正如@deinst所提到的,gcc能够输出你的cpp直接和间接使用的所有头文件。你需要的是大致如下:
obj-file: src-file
# dep file should be recreated each time header file or header file it depends on is changed
dep-file: src-file
gcc -M ...... > dep-file
modify dep-file to make dep-file depend and all header files too
include dep-file
在我参与的项目中实施了一次,但是这个想法的全面实施是漫长而棘手的。
如果您有可能考虑使用支持自动维护的更高级工具,例如cmake或scons。我个人使用cmake - 每个程序员都可以编写一个cmake文件,并且自动执行是免费的。