<tab> ;$(MACRONAME)
${MACRONAME}
$MACRONAME
[guest@test guest]# vi makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
main: ${OBJS}
gcc -o main ${OBJS} ${LIBS}
clean:
rm -f main ${OBJS}
[guest@test guest]# make clean main "CFLAGS=-Wall"
[guest@test guest]# vi makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main: ${OBJS}
gcc -o main ${OBJS} ${LIBS}
clean:
rm -f main ${OBJS}
#%* 目標項目 all 只會產生 myapp。執行 make 預設建立目標項目 myapp。*) all: myapp # Which compiler CC = gcc # Where are include files kept INCLUDE = . # Options for development (-g Produce debugging information) CFLAGS = -g -Wall -ansi # Options for release # CFLAGS = -O -Wall -ansi myapp: main.o 2.o 3.o $(CC) -o myapp main.o 2.o 3.o main.o: main.c a.h $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c 2.o: 2.c a.h b.h $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c 3.o: 3.c b.h c.h $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c
$ rm *.o myapp $ make -f Makefile2 gcc -I. -g -Wall -ansi -c main.c gcc -I. -g -Wall -ansi -c 2.c gcc -I. -g -Wall -ansi -c 3.c gcc -o myapp main.o 2.o 3.o $
$(CC)、$(CFLAGS) 和 $(INCLUDE) 的部分。故若要改變編譯器命令,只需改變這些變數。
$?代表需要重建(被修改)的相依性項目。$@目前的目標項目名稱。$<代表目前的相依性項目。$*代表目前的相依性項目,不過不含副檔名。
[guest@test guest]# vi makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main: ${OBJS}
gcc -o $@ ${OBJS} ${LIBS} %*<== 在此 $@ 即 main 。 *)
clean:
rm -f main ${OBJS}
- :make 會忽略命令的錯誤。
-mkdir /usr/local/repository
clean: -rm main.o 2.o 3.o
@ :make 不會在標準輸出上,顯示要執行的命令。
@,讓 make 在執行該法則時,停止印出標準輸出的文字。
install: myapp
@if [ -d $(INSTDIR) ]; \
then \
...;\
fi
$(MACRONAME) 或 ${MACRONAME}
Next: 多重目標項目(target)
Up: 開發工具 - make 與
Previous: make 命令和 makefile
Contents
2017-06-14