Makefile例項分析

2021-10-08 14:46:23 字數 1153 閱讀 6131

**目錄:

makefile如下:

#arch ?= x86

ifeq (

$(arch)

, x86)

cc = gcc

else

cc = arm-linux-gnueabihf-gcc

endif

target = ***

build_dir = build

src_dir = src module

inc_dir = include

cflags =

$(patsubst %, -i%, $(inc_dir)

)includes =

$(foreach dir, $(inc_dir)

, $(wildcard $(dir)

/*.h))

sources =

$(foreach dir, $(src_dir)

, $(wildcard $(dir)

/*.c))

objs =

$(patsubst %.c, $(build_dir)

/%.o, $(notdir $(sources)

))vpath =

$(src_dir)

$(build_dir)

/$(target)

:$(objs)

$(cc)

$^ -o $@

$(build_dir)

/%.o : %.c $(includes)

| create_build

$(cc)

-c $< -o $@

$(cflags)

.phony : clean create_build

clean :

rm -rf $(build_dir)

create_build :

mkdir -p $(build_dir)

需要注意兩點:

vpath用來告訴編譯器依賴的搜尋路徑。

|後面為order-only依賴,只在第一次構建的時候執行一次(構建是指每次執行makefile)。

工程Makefile例項

1級makefil phony clean for subdir in subdirs do cd subdir make clean done 級makefile target lib notdir curdir a objs wildcard o cc flags fpic md 靜態庫合成動態...

makefile 簡單例項

3 複雜專案 makefile 編寫 變數定義和初始化 可選 目標 依賴項 指令目標 依賴項 指令.注 指令可以是編譯指令或其它可以在命令列執行的指令。定義變數後就可以在 目標 依賴 指令 中訪問 var name 檔案結構 檔案內容 main.c include extern intaddint ...

makefile例項(2) 多個檔案例項

1,原始檔依賴關係 defs.h command.h buffer.h main.cpp util.cpp kde.cpp command.cpp display.cpp insert.cpp search.cpp files.cpp 2,原始檔 因為這裡只是想做一下簡單測試,所以很多原始檔的內容都...