makefile入门

makefile入门

一个规则

目标:依赖条件

(Tab)命令

两个函数

  1. wildcard:

    src=$(wildcard ./*.c) #匹配当前目录所有.c文件,将文件名组成列表赋值给变量src
    
  2. patsubst

    obj=$(patsubst) #将参数3中包含参数1的部分,替换成参数2
    

三个自动变量

  • $@:表示规则中的目标
  • $<:表示规则中的第一个依赖条件,在模式规则中,可将依赖列表中的依赖一次取出,套用模式规则
  • $^:表示规则中的所有依赖条件,组成一个列表,以空格隔开,如果列表中有重复项则消除重复项

模式规则

%.o:%.c
	gcc -c \$< -o \$@

静态规则

obj=$(patsubst)
$(obj):%.o:%.c
	gcc -c \$< -o \$@

伪目标

.PHONY: clean all

例子

CC		:= g++
C_FLAGS := -std=c++17 -Wall -Wextra

BIN		:= bin
SRC		:= src
INCLUDE	:= include
LIB		:= lib

LIBRARIES	:=

EXECUTABLE	:= main

all: $(BIN)/$(EXECUTABLE)

clean:
	$(RM) $(BIN)/$(EXECUTABLE)

run: all
	./$(BIN)/$(EXECUTABLE)

$(BIN)/$(EXECUTABLE): $(SRC)/*
	$(CC) $(C_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章