data/method/一些思考/常用/Makefile.txt

153 lines
5.6 KiB
Makefile
Raw Normal View History

2024-01-29 10:44:43 +08:00
1.makeMakefilemakefile
2.targetedit
3.editedit .o editedit
4.edit.omake.o.o
5.CHmake .o .o makeedit
Makefile
Makefile
Makefile
make
/*********************************
->->->
1)
.c .i
使gccgcc E
2)
.c/.h.s
使gccgcc S
3)
.s .o
使gcc gcc c
4)
.o
使gcc gcc
*************************************/
target ... : prerequisites ... //一条规则,以依赖项来生成最终目标
command //prerequisites target command
edit : main.o kbd.o command.o display.o \ //edit依赖以下二进制文件
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o \ //将以下汇编文件链接成edit这个可执行文件
insert.o search.o files.o utils.o
main.o : main.c defs.h //main.o文件依赖以下文件
cc -c main.c //将main.c文件按依赖项汇编成main.o文件
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
makefile 使
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
使$(objects)使
make
make [.o][.c] make
whatever.o whatever.c whatever.o cc -c
whatever.c
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean //“.PHONY”表示,clean是个伪目标文件。
clean :
rm edit $(objects)
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
$(objects) : defs.h
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h
.PHONY : clean
clean :
rm edit $(objects)
clean:
rm edit $(objects)
.PHONY : clean
clean :
-rm edit $(objects) //在 rm 命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事
=使 //
:= //
?=
+=
VAR_A=abc
VAR_B=$(VAR_A) 222
VAR_C:=$(VAR_A)
VAR_A=def
#VAR_B的值会改变为def 222而VAR_C的值还是为abc
VAR_A:=$(VAR_B)222
VAR_B=$(VAR_A)
#由于一开始VAR_B没有值所以VAR_A的值为222VAR_B的值为222
VAR_D=111
VAR_D?=000
#VAR_D的值仍为111
VAR_E=file1.c
VAR_E+= file2.c
#VAR_E最后的值为file1.c file2.c
#等价于:
VAR_E=$(VAR_E) file2.c
%*
%%%使
法如下:%.o : %.c
test:test.o test1.o test2.o
gcc -o $@ $^
test.o:test.c test.h
gcc -o $@ $<
test1.o:test1.c test1.h
gcc -o $@ $<
test2.o:test2.c test2.h
gcc -o $@ $<