C++进阶3:Makefile入门
0、作用
Makefile文件告诉Make怎样编译和连接成一个程序。
1、Makefiile基本语法与执行
1.1 示例
编译一个单文件HelloWorld.cpp
(1)编写Makefile
HelloWorld : HelloWorld.cpp
g++ HelloWorld.cpp -o HelloWorld
clean :
rm HelloWorld
(2)编译
make
(3)清空
make clean
1.2 构成
Makefile主要由多条规则构成,每条规则由三部分构成:目标(target)、依赖(prerequiries)和命令(command)。
1.3 格式
按如下格式编写Makefile
目标(target): 依赖(prerequiries)...
命令(command)
(1)目标(target)通常是要产生的文件的名称,目标的例子是可执行文件或OBJ文件。目标也可是一个执行的动作名称,诸如‘clean’(仅仅表达动作的目标称为假想目标)。
(2)依赖是用来输入从而产生目标的文件,一个目标经常有几个依赖。
(3)命令是Make执行的动作,一个规则可以含有几个命令,每个命令占一行。
注意:
每个命令行前面必须是一个Tab字符,即命令行第一个字符是Tab。这是不小心容易出错的地方。
1.4 说明:
(1)默认情况下,make最先执行第一条。
(2)使用make 目标名的方式,执行指定的规则。
2、Makefile多文件编译
2.1 示例
(1)string.h
#ifndef _STRING_H_
#define _STRING_H_
#include <iostream>
using namespace std;
#include <string.h>
class String{
public:
String(const char* cstr = NULL);
String(const String& str);
String& operator=(const String& str);
~String();
char* c_str() const {
return m_data;
}
private:
char* m_data;
};
ostream& operator<<(ostream& os, const String& str);
#endif // _STRING_H_
(2)string.cpp
#include "String.h"
String