|
|
1
18
答案在
GCC manual
使用
|
|
|
2
38
我假设您使用的是GNU make和GCC。首先添加一个变量来保存依赖文件列表。假设您已经有一个列出了我们所有的来源:
然后在makefile中包含生成的依赖项:
然后添加此模式规则:
“$@”是目标(位于:)左侧的内容,“$<”是前提条件(位于:)右侧的内容)。表达式“$(<:.c=.o)”将.c扩展名替换为.o。 这里的诀窍是通过两次添加-mt来生成具有两个目标的规则;这使得.o文件和.d文件都依赖于源文件及其头文件;这样,每当任何相应的.c或.h文件发生更改时,依赖文件都会自动重新生成。 -mg和-mp选项可以防止make在缺少头文件时出错。 |
|
|
3
10
你可能会喜欢这个简短版本的唐·麦考奇的回答:
添加
不需要单独的模式规则来生成依赖文件。简单添加
|
|
|
4
3
详细介绍了德根蒂的答案,这对我来说很有效:
这也适用于只有一个依赖文件包含所有源文件的依赖规则的情况。 |
|
|
5
1
好的,只是为了确保我的问题是正确的:我假设您有test.c,其中包括test.h,并且您希望生成subdir/test.d(while 不 生成subdir/test.o),其中subdir/test.d包含
而不是
这就是你现在得到的。对吗? 我想不出一个简单的方法来做你想要的。但是,看看 http://www.gnu.org/software/gcc/news/dependencies.html ,如果要在生成.o文件时创建.d文件,可以使用
(给定src=test.c,subdir=subdir,obj=test.o)这将创建subdir/test.o和subdir/test.d,其中subdir/test.d包含上述所需的输出。希望有帮助。 |
|
|
6
0
如果GCC有理由这么做,我不知道这是什么。最后,我们通过sed传递依赖项输出,将所有出现的.o重写为$objdir/.o。 |
|
|
7
0
|
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 10 月前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 11 月前 |
|
|
ikegami Gilles Quénot · 关节手术中常见的关节转换 12 月前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |