1. 程式人生 > >Makefile學習(一)----初步理解

Makefile學習(一)----初步理解

一.我對makefile的理解:

經過一段時間對makefile的學習,我理解的makefile就是將程式設計師手動編譯原始檔的過程用一個指令碼執行,這對於小型專案來說,程式設計師手動執行和用makefile來執行感官上可能沒有大的差異,但是對於中大型專案來說,makefile的存在大大提供了程式設計師編譯程式碼效率,一個好的makefile檔案是一個專案健康存在的基礎。

 

二.初涉makefile:

   用個簡單的例子初步認識下makefile:

原始檔:test.cpp:

#include<iostream>

using namespace std;

 

class A

{

        private:

        int a;

        public:

        A(int i)

        {

                a=i;

        }

 

        void disp()

        {

                cout<<a<<",";

        }

};

 

class B

{

        private:

        int b;

        public:

        B(int j)

        {

                b=j;

        }

 

        void disp()

        {

                cout<<b<<",";

        }

};

 

class C:public B,public A

{

        private:

        int c;

        public:

        C(int k):

        A(k-2),B(k+2)

        {  

                c=k;

        }

 

        void disp()

        {

                A::disp();

                B::disp();

                cout<<c<<endl;

        }

};

 

int main()

{

        C obj(10);

        obj.disp();

        return 0;

}

 

Makefile檔案Makefile:

test:test.o

        g++  test.o  -o  test   

test.o:test.cpp

        g++  -c  test.cpp  -o  test.o

 

clean:

        rm  -fr  test  test.o

****************************************************************************

test:test.o                         ---- test是目標檔案,也就是最後要生成的可執行檔案;

                                               test.o編譯原始檔產生的中間程式碼檔案;

                                               這行命令的意思是:目標檔案test的產生依賴於中間程式碼檔案test.o;

g++  test.o  -o  test           ---- 這行是編譯器通過中間程式碼檔案產生目標檔案的命令,命令必須以tab鍵打頭,否則執行的時候會報錯;這邊使用的是g++編

                                               譯器,所以你的環境必須安裝g++編譯器;

test.o:test.cpp                    ----這行的目標檔案是test.o,依賴檔案是test.cpp;和第一行的格式相同;

g++ -c test.cpp –o test.o     ----這行是通過原始檔test.cpp如何生成中間程式碼檔案test.o,是編譯命令;

 

clean:

        rm  -fr  test  test.o

 

clean是清除想要刪除的檔案,執行的時候需要使用命令make clean,一般是刪除中間程式碼檔案和最後生成的目標檔案,即可執行檔案;

 

      在環境中執行make命令,系統就會在目錄下自動尋找Makefile、makefile檔案,然後執行makefile檔案中的內容;同樣,你可以指定你自己的makefile檔名,比如:makefile_201020831,執行的時候必須用make –f makefile_201020831;

      Makefile的執行過程是一個遞迴的過程,目標檔案:依賴檔案,是使用命令通過依賴檔案生成目標檔案的過程;

      驗證生成的目標檔案,即可執行檔案,直接./test即可。