**目錄:
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,原始檔 因為這裡只是想做一下簡單測試,所以很多原始檔的內容都...