包含嵌套的.h文件的项目的makefile

时间:2019-05-08 09:12:36

标签: c makefile

假设a1.ca2.c包含a.h,而b.h本身又包含a1.c。因此a2.cb.h间接依赖于b.h

现在,如果b.h被修改,我希望makefile编译两个.c文件。一种方法是将a.htouch一起添加到每个规则的依赖项列表。但是我觉得,随着项目的规模越来越大,这可能会使事情变得有些复杂。另一种方法可能是为a.h更改时b.h添加cap = cv2.VideoCapture('test/Pedestrian overpass.mp4') #cap = cv2.VideoCapture('test/dark1.mp4') if (cap.isOpened() == False): print("Error opening video stream / file") exit(0) else: print("Hello") ret , frame0 = cap.read() prevFrame = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY) 的规则。 (我还没有尝试过后者)

处理Makefile中嵌套依赖项的最佳方法是什么?

我所说的“最佳方式”:

  1. makefile尽可能紧凑和简单

  2. 每个.c文件仅在其相关的.h文件中至少一个更改时才被编译

  3. 不依赖于特定编译器或操作系统的功能或工具

1 个答案:

答案 0 :(得分:2)

gcc -MM *.c将根据需要输出依赖项。

a1.o: a1.c a.h b.h
a2.o: a2.c a.h b.h

这又可以用作内置规则(指定CC和CFLAGS宏)。

为避免每次更改后手动重新生成makefile,请考虑使用CMake和/或IDE。