gpt4 book ai didi

gcc - 使 gcc -NM 输出目标文件名的相对路径

转载 作者:行者123 更新时间:2023-12-04 20:37:58 25 4
gpt4 key购买 nike

我正在使用 gcc 生成我的 Makefile 的依赖项。但它不使用相对路径。例如,

gcc -MM util/test.c ui/resource.c

产生
test.o: util/test.h
resource.o: ui/resource.h

同时,允许 制作 要找到依赖项,它应该会生成如下内容:
util/test.o: util/test.h
ui/resource.o: ui/resource.h

有没有办法让 gcc 表现得像第二个例子?

最佳答案

来自 man gcc

-MT target
Change the target of the rule emitted by dependency generation. By default CPP takes the name of the main input file, deletes any directory components and any file suffix such as .c, and appends the platform's usual object suffix. The result is the target.

An -MT option will set the target to be exactly the string you specify. If you want multiple targets, you can specify them as a single argument to -MT, or use multiple -MT options.

For example, -MT '$(objpfx)foo.o' might give

$(objpfx)foo.o: foo.c

-MQ target
Same as -MT, but it quotes any characters which are special to Make. -MQ '$(objpfx)foo.o' gives

$$(objpfx)foo.o: foo.c

The default target is automatically quoted, as if it were given with -MQ.



因此,您可以使用例如
gcc -MM -MT util/test.o util/test.c
gcc -MM -MT ui/resource.o ui/resource.c

更新:

如果您希望所有依赖项都在一个文件中,则有多种可能性。

您可以执行 gcc -MM按顺序并重定向输出
( gcc -MM -MT util/test.o util/test.c; gcc -MM -MT ui/resource.o ui/resource.c ) >file.deps

您可以使用 sed 或 perl 对输出进行后处理
gcc -MM util/test.c ui/resource.c | perl -p -e 's,^(.+?)\.o: (.+?)/\1\.c.*,$2/$&,;' >file.deps

您可以重定向第一个输出并将以下内容附加到某个文件
gcc -MM -MT util/test.o util/test.c >file.deps
gcc -MM -MT ui/resource.o ui/resource.c >>file.deps

关于gcc - 使 gcc -NM 输出目标文件名的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com