一點一點學寫Makefile 1

2022-07-29 15:30:33 字數 2290 閱讀 3100

相信很多linux開發者 都得自己來寫makefile,剛開始學習學寫這個的時候都會碰到很多困難,我之前沒有自己獨立完成過makefile,都是在公司已有的模板上新增。現在突然有乙個很大的想法就是從零開始寫makefile,這個部落格就是我的學習筆記。

**如下:

[cpp]view plain

copy

#ifndef add_h  

#define add_h  

int add(int a, int b);  

#endif // add_h  

#include "add.h"  

int add(int a, int b)  

[cpp]view plain

copy

#ifndef mul_a  

#define mul_a  

int mul(int a, int b);  

#endif // mul_a  

#include "mul.h"  

int mul(int a, int b)  

[cpp]view plain

copy

#ifndef sub_h  

#define sub_h  

int sub(int a, int b);  

#endif // sub_h  

#include "sub.h"  

int sub(int a, int b)  

接下來就是最重要的makefile檔案了

[plain]view plain

copy

//makefile  

cross =   

cc = $(cross)gcc  

cxx = $(cross)g++  

debug = -g -o2  

cflags = $(debug) -wall -c  

rm = rm -rf  

srcs = add.cpp sub.cpp mul.cpp main.cpp  

objs = $(patsubst %.cpp, %.o, $(srcs))  

version = 1.0.0.0  

target = test.$(version)  

$(target) : $(objs)  

$(cxx) $^ -o $@  

$(objs):%.o : %.cpp  

$(cxx) $(cflags) $< -o $@  

clean:  

$(rm) $(target) *.o   

好了,這就是我的工程裡面所有的**和檔案,這裡面有makefile檔案和make.force兩個檔案,這兩個檔案的內容完全相同。在執行make命令的時候,系統會自動找到makefile或makefile檔案(注:盡可能使用makefile名稱,因為linux開發專案中,所有的檔案名字都是小寫,因此為了區分出make檔案,將m大寫),除此之外也可以手動指定make檔案,使用"make

-f make.force"來指定將make.force檔案作為執行make命令的檔案,清理內容是("make clean -f

make.force")。

下來,開始一句一句的講解makefile檔案的命令:

cross =     //在開發時候,有時候會有嵌入式的選項

cc = $(cross)gcc

cxx = $(cross)g++

debug = -g -o2   //這裡一般設定為空,在編譯時候手動指定,例如:make debug="-g -o2"

cflags = $(debug) -wall -c

rm = rm -rf

srcs = add.cpp sub.cpp mul.cpp main.cpp   //最笨的方法,將所有的.cpp檔案新增到srcs中

objs = $(patsubst %.cpp, %.o, $(srcs))       //通過*.cpp檔案獲得同名的*.o檔案

version = 1.0.0.0   //版本資訊

target = test.$(version) //組裝檔名和版本資訊

$(target) : $(objs) //連線

$(cxx) $^ -o $@

$(objs):%.o : %.cpp   //生成*.o檔案

$(cxx) $(cflags) $< -o $@

clean:

$(rm) $(target) *.o

一點一點進步

requestparam,是獲取前端傳遞給後端的引數,可以使get方式,也可以是post方式。若前端傳遞的引數和後端接收的引數名稱不一致,則必須要標註。pathvariable,是獲取get方式,url後面引數,進行引數繫結。1.裝箱就是講基本資料型別轉換為包裝類,拆箱就是自動將包裝類轉換為基本資料...

他們寫的,一點思考,一點敬意

技術的正宗與野路子 我們的大腦好比記憶體。既然是記憶體,就裝不下所有的知識。但應該能裝下對於知識的索引,否則我們便沒法工作了。啊,我的程式為啥卡住啦 本文簡答介紹在linux環境下如何利用gdb來分析卡住的程式,本文使用的python為cpython2.7。2019,能否解開時間的困局?通常在年初的...

每天學一點(一)

記錄學習內容 js中對於函式的建立,在使用函式表示式和函式宣告相結合時,正確寫法為 var sum function sum a,b console.log sum 1,2 輸出3 若定義的變數和函式名稱書寫不一致,則會產生錯誤。var sum1 function sum2 a,b console....