假设a1.c
和a2.c
包含a.h
,而b.h
本身又包含a1.c
。因此a2.c
和b.h
间接依赖于b.h
。
现在,如果b.h
被修改,我希望makefile编译两个.c文件。一种方法是将a.h
与touch
一起添加到每个规则的依赖项列表。但是我觉得,随着项目的规模越来越大,这可能会使事情变得有些复杂。另一种方法可能是为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中嵌套依赖项的最佳方法是什么?
我所说的“最佳方式”:
makefile尽可能紧凑和简单
每个.c文件仅在其相关的.h文件中至少一个更改时才被编译
不依赖于特定编译器或操作系统的功能或工具
答案 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。