linux下Makefile的簡單例子及解釋


對於大一點的項目,Makefile都是不可或缺的,這里記錄一個自己弄的簡單的例子。

 

有3個file: main.cpp main2.cpp main2.h

main.cpp    --    main函數所在,調用main2.cpp中的一個外部函數test()

main2.cpp  --    test函數所在

main2.h     --    test的函數聲明

 

看一下三個文件:

//main.cpp
#include <iostream>
#include "main2.h"
using namespace std;

void test();

int main()
{
    int a = 1;
    test();
}
//main2.cpp
#include <iostream>
#include "main2.h"
using namespace std;

void test()
{
    cout<<"test in main2.cpp"<<endl;
}
//main2.h
#ifndef _MAIN2_H_
#define _MAIN2_H_

void test();

#endif

 

流程是:

main2.cpp -> main2.o

main.cpp   -> main.o

main.o + main2.o  ->  main(可執行文件)

 

那么Makefile這樣寫:

main: main.o main2.o
    g++ -o main main.o main2.o

main.o: main.cpp main2.h
    g++ -o main.o -c main.cpp

main2.o: main2.cpp main2.h
    g++ -o main2.o -c main2.cpp

clean:
    rm *.o main

 

其中g++所在的行,就是執行編譯的命令。

其中帶有冒號 : 的行,意思是如果冒號后面有文件更新了,那么就執行下一行g++命令更新冒號前的那個內容。冒號前的內容depend on冒號后的內容。

clean就是清除中間文件和最終文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM