【发布时间】:2019-10-05 17:22:55
【问题描述】:
我使用以下目标为我的项目生成了依赖项。
只编译生成的依赖的第一行。
然后,我的主文件依赖于我项目中的所有源文件; 有什么想法吗?
我的依赖文件是这样生成的:
rules.d : $(wildcard *.c) $(wildcard *.h)
gcc -MM $(wildcard *.c) > rules.d
然后我做了
-include rules.d
然后只编译第一个生成的依赖项。
rules.d 包含例如
main.o:main.c *.h
a.o=a.c
b.o=b.c
c.o=c.c
我们在项目中有以下文件
a.h a.c
b.h b.c
c.h. c.c
main.c(包含main函数),包含所有头文件。
我以这种方式拆分我的项目,因为这是团队的强制要求。
任何帮助将不胜感激。
【问题讨论】:
-
您能否澄清一下问题:“仅编译生成的依赖项的第一行。” ?
-
我不明白为什么人们会到处将这些问题标记为“接近”,因为它们“与编程无关”。在哪个领域,编写 makefile 不算编程?
-
我无法重现您的情况。我也无法理解您是如何在
rules.d文件中获得结果的。我从来没有听说过gcc将像a.o=a.c这样的变量赋值生成到依赖列表中。我也从未见过它会生成像*.h这样的通配符先决条件。您确定您确实正确地将文件内容剪切并粘贴到您的问题中吗?如果是这样,您的 makefile 中肯定有比您在此处提供的更多内容。 -
在提问时,最好显示您输入的用于调用
make的命令行,以及您获得的(相关)输出,以及它不是什么方式的具体描述你想要的。 -
@dash-o rules.d 有 main.o: *.h main.c / a.o:a.c / b.o:b.c / c.o:c.c 。只有第一部分是通过 gcc 评估的,这将导致 main.o only