C++ 如何在make dependency list中检测标题更改
在经历了近十年的C#和VC++编码之后,我又回到了linux–g++–make–emacs环境 尝试刷新关于编写make文件的记忆我没有很多问题,但我在以下问题上遇到了问题,我承认我不记得过去是如何解决的: 假设一个特定的.cpp文件与其他几个头文件有一些依赖关系(将其对应的头文件放在一边,这样很容易处理)…检测某些.h文件已更改的最佳方法是什么 我当然不喜欢将它们放在我的目标依赖列表中,因为这是一个手动且容易出错的过程 当然,简单的答案是,只要有.h变化,就要构建干净的,但我真的不记得标准方法是什么C++ 如何在make dependency list中检测标题更改,c++,makefile,C++,Makefile,在经历了近十年的C#和VC++编码之后,我又回到了linux–g++–make–emacs环境 尝试刷新关于编写make文件的记忆我没有很多问题,但我在以下问题上遇到了问题,我承认我不记得过去是如何解决的: 假设一个特定的.cpp文件与其他几个头文件有一些依赖关系(将其对应的头文件放在一边,这样很容易处理)…检测某些.h文件已更改的最佳方法是什么 我当然不喜欢将它们放在我的目标依赖列表中,因为这是一个手动且容易出错的过程 当然,简单的答案是,只要有.h变化,就要构建干净的,但我真的不记得标准方法
在VC++中,我不必处理这个问题,因为IDE非常擅长处理依赖项…请看。带有-M-MD-MT等标志的gcc将解析您的文件并计算依赖项。让他们通过sed。google会找到很多例子。正如@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
它在我参与的项目中实施过一次,但这个想法的全面实施是漫长而棘手的
如果有可能,请考虑支持AutoDebug的高级工具,如OR。我个人与cmake合作过-每个程序员都可以编写cmake文件,并且AutoDependence是免费的。
deinst和idimba让您走上了正确的道路。要了解您可能遇到的潜在陷阱以及如何避免它们,请阅读本文