

makefile 正在学习中,看到一个规则里面用了 sed 命令,sed 命令里用了$*,感觉只用正则表达式来解释$解释为行尾解释不通。
ldd@CD:~/hello$ gcc -M hello.c hello.o: hello.c /usr/include/stdc-predef.h /usr/include/stdio.h \ /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ /usr/include/x86_64-linux-gnu/bits/wordsize.h \ /usr/include/x86_64-linux-gnu/bits/long-double.h \ /usr/include/x86_64-linux-gnu/gnu/stubs.h \ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ /usr/include/x86_64-linux-gnu/bits/types.h \ /usr/include/x86_64-linux-gnu/bits/timesize.h \ /usr/include/x86_64-linux-gnu/bits/typesizes.h \ /usr/include/x86_64-linux-gnu/bits/time64.h \ /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h 另外随便写了一个 hellowoald ,看了 gcc -M 的输出如上。
另外,为啥一定要用这个 d 文件,感觉有点没理解它的妙处?
PS:脚本方面比较弱,正在学习中,大佬们帮忙解答下。
1 ho121 Oct 16, 2024 |
2 amiwrong123 OP |
3 ho121 Oct 16, 2024 @amiwrong123 不妨贴一下那条 sed 命令 |
4 amiwrong123 OP |
5 amiwrong123 OP @ho121 规则下面的命令的缩进没了 |
6 alexsz Oct 16, 2024 问过 AI 了吗? $* 实际上是 Makefile 中的一个自动变量( automatic variable ),代表目标文件的名称,但不包括文件扩展名。 |
7 amiwrong123 OP |
8 Acatdef Oct 16, 2024 shell 不会解析单引号里的变量 @amiwrong123 |
9 amiwrong123 OP |
10 Acatdef Oct 17, 2024 @amiwrong123 上面老哥提到了,$*是 makefile 的变量 |