日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux编程——入门级Makefile文件编写

發布時間:2025/3/21 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux编程——入门级Makefile文件编写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

1.在Linux開發環境中,編寫Makefile文件是一個必須的技能,雖然現在有好多IDE可以自動生成所需要的Makefile文件,但有時能看懂Makefile文件也是更好的了解項目的編譯過程。
2.我在這里只演示入門級Makefile文件的編寫,我使用的系統是Ubuntu16.04這個版本,使用的演示源碼語言是C++。

源文件準備

1.假設我們現在有main.cpp,other.cpp,other.h這三個源文件,其中main.cpp是主函數,它調用了other.h里面的函數。
main.cpp代碼如下:

#include "other.h"int main(void) { int i = add(45,50);cout << "i = " << i << endl;return 0; }

other.cpp

#include "other.h"int add(int i, int j) {return i+j; }

other.h

#ifndef OTHER_H #define OTHER_H #include <iostream>using namespace std;int add(int, int);#endif // OTHER_H

2.如果現在我們使用g++進行編譯,則是直接生成用-o編譯,生成可執行文件.

g++ main.cpp other.cpp -o add

然后運行可執行文件:

./add


3.如是只有一兩個源文件,這樣編譯是沒有問題的,但有幾十個或者上百個時,這樣編譯是不現實的,那就要Makefile文件做這一步。
(1)Makefile文件的編寫規則是:

規則:依賴命令 規則:依賴命令

(2)那用Makefile編譯上面的源碼的步驟是:
A、在存放源碼的路徑下新建一個Makefile文件,不要任何后綴,用vim打開。
B、按上面給的規則寫好Makefile文件:

add:main.cpp other.cppg++ main.cpp other.cpp -o addtest:./add clean:rm add

C、保存,退出,在當前目錄下執行make這個命令:

可以看到,在當前目錄下多了一個add的可執行文件,返回看上面的makefile的代碼,我寫了三個規則,但Make是默認只執行第一個規則而已。
接下我執行:

make test

執行了第二條規則,以此類推,要執行第三條規則,則在make后面加上規則名。

D.依賴項的意思是,如果依賴的其中的文件有更新則重新編譯,但只編譯有變化的文件。

4.這只是簡單的介紹了Makefile文件的編寫方式,那真正項目中的Makefile文件是這樣子的,會使用一些通配符,Makefile文件能調用的庫函數等,但原理不變。

EXE = subject #給變量賦值#src放源代碼文件,object是放項目的路徑 SUBDIR = src object#用迭代器把所有的子目錄下的cpp找到 CXX_SURCES = $(foreach dir,$(SUBDIR),$(wildcard $(dir))/*.cpp)#patsubst函數把列表的文件替換 CXX_OBJECTS=$(patsubst %.cpp,%.o,$(CXX_SURCES))#得到.d文件 DEP_FILES=$(patsubst %.cpp,%.d,$(CXX_SURCES))$(EXE):$(CXX_OBJECTS) #編譯命令g++ $(CXX_OBJECTS) -o $(EXE)%.o:%.cpp #鏈接命令g++ -c -MMD $< -o $@ #$<(依賴項列表) $@(當前規則) -MMD(生成.d文件為生.h的依賴)-include $(DEP_FILES) #簡化頭文件依賴cleran:rm -rf $(EXE) $(DEP_FILES) $(CXX_OBJECTS)

總結

以上是生活随笔為你收集整理的Linux编程——入门级Makefile文件编写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。