makefile中的宏定义
makefile程序的一开始进行变量的宏定义,在编写编译程序的时候在进行变量的引用.
变量的定义和赋值的方法,如下:
EXE = file1.o file2.o
CC = gcc
变量的引用
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) -c hello1.c
运行make后显示:
gcc -c hello.c
gcc -c hello1.c
gcc hello.o hello1.o -o main
./main看结果.
进一步改进,引入自定义变量
EXE=hello.o hello1.o
CC=gcc
CFLAGS = -Wall -O -g
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) $(CFLAGS) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) $(CFLAGS) -c hello1.c
make后结果显示:
melody@melody-G41D3:~/make3$ make
gcc -Wall -O -g -c hello.c
gcc -Wall -O -g -c hello1.c
gcc hello.o hello1.o -o main
melody@melody-G41D3:~/make3$ ./main
myprint 1!
到此为止,自定义变量的引入已经正常.
gcc 参数的意义:
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-g
只是编译器,在编译的时候,产生调试信息。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
-E 只运行 C 预编译器。
变量的引用
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) -c hello1.c
运行make后显示:
gcc -c hello.c
gcc -c hello1.c
gcc hello.o hello1.o -o main
./main看结果.
进一步改进,引入自定义变量
EXE=hello.o hello1.o
CC=gcc
CFLAGS = -Wall -O -g
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) $(CFLAGS) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) $(CFLAGS) -c hello1.c
make后结果显示:
melody@melody-G41D3:~/make3$ make
gcc -Wall -O -g -c hello.c
gcc -Wall -O -g -c hello1.c
gcc hello.o hello1.o -o main
melody@melody-G41D3:~/make3$ ./main
myprint 1!
到此为止,自定义变量的引入已经正常.
gcc 参数的意义:
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-g
只是编译器,在编译的时候,产生调试信息。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
-E 只运行 C 预编译器。