1、目標名稱,擺脫手動設定目標名稱
[cpp]view plain
copy
target = $(notdir $(curdir))
all:$(target)
cmd....
$(curdir) 表示makfile當前目錄全路徑
$(notdir $(path)) 表示把path目錄去掉路徑名,只留當前目錄名
這樣就可以得到makefile當前目錄名稱,用目錄名作為目標程式名是乙個不錯的選擇
2、使用include,把所有makefile共享的設定包含進來
[cpp]view plain
copy
base_dir = /root/dm36x
include $(base_dir)/rules.make
xdc_path = $(dmai_install_dir)/packages
[cpp]view plain
copy
dmai_install_dir在rules.make中已經設定過,這樣,需要使用dmai_install_dir變數的時候只要include 這個rules.make接可以了
3、遍歷遍歷所有特定的原始檔
[cpp]view plain
copy
sources = $(wildcard *.c)
headers = $(wildcard *.h)
如果當前目錄先有 main.c func.c func.h
這樣sources變數就等於main.c func.c
headers變數就等於func.h
這樣就每次新增原始檔後 就不需要重新修改makefile了
4、替換檔名稱
[cpp]view plain
copy
objfiles = $(sources:%.c=%.o)
如果sources等與3中的main.c和func.c
這樣objfiles就等於main.o func.o
同樣擺脫了手動修改編譯的中間檔名
5、交叉編譯設定
[cpp]view plain
copy
verbose = @
compile.c = $(verbose) $(mvtool_prefix)gcc $(c_flags) $(cpp_flags) -c
link.c = $(verbose) $(mvtool_prefix)gcc $(ld_flags)
6、編譯
[cpp]view plain
copy
$(objfiles): %.o: %.c $(headers)
@echo compiling $@ from $<..
$(compile.c) -o $@ $< 7、
[cpp]view plain
copy
install: $(if $(wildcard $(target)), install_$(target))
install_$(target):
@install -d $(exec_dir)
@install $(target) $(exec_dir)
@install $(target).txt $(exec_dir)
@echo
@echo installed $(target) binaries to $(exec_dir)..
makefile寫法簡單示例
作為linux或unix下的程式開發人員,大家一定都遇到過makefile,用make命令來編譯自己寫的程式確實是很方便。一般開發情況下,大家都是手工寫乙個簡單makefile。下面先給乙個最簡單的示例 makefile示例 object main.o function.o change objec...
makefile的寫法 一
linux中使用g 的方法 第一步預處理 g e test.cpp o test.i o 表示輸出的專案 該部處理將巨集,typedef等處理替換 結果是 i 檔案 1.預處理 pre processing gcc e test.c o test.i i檔案 第二步編譯 g s test.i o t...
makefile的簡單寫法
makefile 使用方法 vi 乙個makefile檔案 cc g 指的是用什麼編譯器 rm rm rf 定義乙個刪除的指令 變數 cflags c wall i.d debug 編譯標誌 冒號左邊是目標,右邊是依賴 client main.o client.o logreader.o conso...