常見makefile寫法

2021-09-08 14:58:26 字數 1910 閱讀 3373

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...