当前位置: 技术问答>linux和unix
[makefile]几个看不懂的指令,请大虾指示
来源: 互联网 发布时间:2016-07-17
本文导语: 发现以下几个符号,手头的资料 《跟我一起写makefile》 以及 《gcc中文手册》中都没有查到, 望高手指点 1。 $(ALL_DEPENDS):$(SRC_FILES) $(CC) $(CPPFLAGS) -MM $^ -MT $(patsubst %.c,%.o, $> $@ //问题A: 这里的 -MT 是...
发现以下几个符号,手头的资料
《跟我一起写makefile》
以及
《gcc中文手册》中都没有查到,
望高手指点
1。
$(ALL_DEPENDS):$(SRC_FILES)
$(CC) $(CPPFLAGS) -MM $^ -MT $(patsubst %.c,%.o, $> $@
//问题A: 这里的 -MT 是什么意思呢?
//问题B: 这里的 >>符号是什么意思?
2。
NOT_FILT_DEPENDS = $(SRC_FILES:.c=.c.d)
DEPENDS = $(filter %.d, $(NOT_FILT_DEPENDS))
#make执行时设置一个特殊变量“MAKECMDGOALS”,此变量记录了命令行参数指定的终极目标列表,没有通过参数指定终极目标时此变量为空。
ifneq ($(MAKECMDGOALS),veryclean)
ifneq ($(MAKECMDGOALS),clean)
#ifneq ($(DEPENDS), )
include $(DEPENDS)//问题C: include 一般是包含别的makefile文件,这里include .d文件是什么意思呢?
#endif
endif
endif
请各位老大不吝赐教
《跟我一起写makefile》
以及
《gcc中文手册》中都没有查到,
望高手指点
1。
$(ALL_DEPENDS):$(SRC_FILES)
$(CC) $(CPPFLAGS) -MM $^ -MT $(patsubst %.c,%.o, $> $@
//问题A: 这里的 -MT 是什么意思呢?
//问题B: 这里的 >>符号是什么意思?
2。
NOT_FILT_DEPENDS = $(SRC_FILES:.c=.c.d)
DEPENDS = $(filter %.d, $(NOT_FILT_DEPENDS))
#make执行时设置一个特殊变量“MAKECMDGOALS”,此变量记录了命令行参数指定的终极目标列表,没有通过参数指定终极目标时此变量为空。
ifneq ($(MAKECMDGOALS),veryclean)
ifneq ($(MAKECMDGOALS),clean)
#ifneq ($(DEPENDS), )
include $(DEPENDS)//问题C: include 一般是包含别的makefile文件,这里include .d文件是什么意思呢?
#endif
endif
endif
请各位老大不吝赐教
|
1。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
2 输出重定向,追加到$@定义的文件中。
3 include后面什么文件名无所谓的,Makefile可以,include.d也可以,就是把文件include进来。
-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
2 输出重定向,追加到$@定义的文件中。
3 include后面什么文件名无所谓的,Makefile可以,include.d也可以,就是把文件include进来。
|
A: 这是gcc编译选项,什么多线程静态库还是什么什么的吧
B: 重定向啊,就是将输出写到后面的文件中
C: include任何文件都可以,这里的include.d文件应该是前面生成了,其中的内容应该是每个.c文件依赖的所有依赖文件了。
B: 重定向啊,就是将输出写到后面的文件中
C: include任何文件都可以,这里的include.d文件应该是前面生成了,其中的内容应该是每个.c文件依赖的所有依赖文件了。