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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章