Makefile基础

命令方式:

       makefile 或 Makefile

makefile规则:

       目标,依赖,命令

       目标:依赖条件

              命令

版本1:

app : main.o add.o sub.o mul.o
    gcc main.o add.o sub.o

版本2:

app:main.o add.o sub.o mul.o
    gcc main.o add.o sub.o mul.o -o app
main.o : main.c
    gcc -c main.c
add.o : add.c
    gcc -c main.c
sub.o : sub.c
    gcc -c sub.c
mul.o : mul.c
    gcc -c mul.c

makefile工作原理:

版本3:

obj=main.o add.o sub.o mul.o
target=app
$(target):$(obj)
    gcc $(obj) -o $(target)
%.o:%.c
    gcc -c $< -o $@

 

makefile中自动变量

$<:规则中的第一个目标

$@:规则中的目标

$:规则中所有的依赖

只能在规则的命令中使用

 

Makefile维护的一些变量:

CC:默认值 cc

CPPFLAGS:预处理器需要的选项,如-I

CFLAGS:编译的时候使用的参数 -Wall -g -c

LDFLAGS:链接库使用的选项 -L -l

 

版本4:

obj=main.o add.o sub.o mul.o
target=app
CC = gcc
CPPFLAGS = -I
$(target):$(obj)
    $(CC) $(obj) -o $(target)
%.o:%.c
    $(CC)-c $< -o $@

 版本5

target=app
src=$(wildcard ./*.c)
obj=$(patsubst ./%.c, %.o, $(src))
INCLUDE=-I ../include
CC = g++
CPPFLAGS = -I 
$(target):$(obj)
    $(CC) $(obj) -o $(target)
%.o:%.c
    $(CC) $(INCLUDE) -c $< -o $@
.PHONY:clean
clean:    
    rm $(obj) $(target)

mkdir /aa

创建一个目录

-mkdir  -的意思是如果执行失败就忽略此条命令继续往下执行

posted @ 2019-08-03 18:23  王清河  阅读(169)  评论(0编辑  收藏  举报