您的位置:首页 > 运维架构 > Linux

linux下Makefile的简单例子及解释

2015-07-31 10:51 288 查看

http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html

对于大一点的项目,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就是清除中间文件和最终文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: