shell make

  • 符号:
    1.-:-rm *.o $(BIN):执行报错,也继续执行下面命令
    2.@: 不回显命令的执行规则,@echo $(CPPFLAGS) $(CFLAGS) $(CC)
    3.$^: 目标所依赖的全部文件(条件)
    4. < : 目 标 所 依 赖 的 第 一 个 文 件 ( 条 件 ) 5. <: 目标所依赖的第一个文件(条件) 5. <:()5.@: 目标文件
all: main.o sub.o
    $(CC) $(CFLAGS) $^ -o $@
main.o:main.c sub.h
    $(CC) $(CFLAGS) $< -o $@

许多源文件时,不想重复写main.o规则,则使用简易编译,自动将.c编译对应的.o文件:

.o .c:
    $(CC) $(CFLAGS) $< -o $@

变量:
1.自定义变量
ALL=main main1
2.系统变量,可以重新赋值
CPPFLAGS=-I:预处理需要的选项
CFLAGS=-Wall -g -c:编译时需要的参数
LDFLAGS=-L -l:链接库需要
CC=cc:默认编译

通配符
1.SRC=$(wildcard $HOME/src/pub/*.c)
@echo ( S R C ) : (SRC): (SRC)HOME/src/pub目录下所有.c文件
2.OBJ=$(patsubst %.c, %.o, $(SRC))
@echo ( O B J ) : 将 (OBJ):将 (OBJ)HOME/src/pub目录下所有.c文件替换为对应.o文件并返回.o列表给OBJ

BIN=main
CC=gcc
CFLAGS=-Wall -g
all:$(BIN)
main:main.o sub.o
    $(CC) $(CFLAGS) $^ -o $@ 
.o .c:
    $(CC) $(CFLAGS) -c $< -o $@
.PHONY:clean:
    -rm *.o $(BIN)
	@echo "删除成功"
#执行:make all

你可能感兴趣的:(linux-shell)