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