Makefile 例子

Author : zbzhen,        Modified : Wed Jan 11 12:37:46 2023

本文档的文件名同二级标题

全部文件打包下载makefile.zip

1. gcc例子

准备文件
新建,项目文件夹hello,及文件main.cpp,factorial.cpp,printhello.cpp,functions.h。

hello目录如下

hello/
├──main.cpp
├──factorial.cpp
├──printhello.cpp
└──functions.h
编译命令

g++ main.cpp factorial.cpp printhello.cpp -o main
./main

1.1. main.cpp

#define _FUNCTIONS_H_

#include <iostream>
#include "functions.h"
using namespace std;

int main()
{
	printhello();
	
	cout << "This is main:" << endl;
	cout << "The factorial of 5 is:" << factorial(5) << endl;
	return 0;
}

1.2. printhello.cpp

#include <iostream>
#include "functions.h"
using namespace std;

void printhello()
{
	cout << "Hello World!" << endl;
}

1.3. factorial.cpp

#include "functions.h"

int factorial(int n)
{
	if (n==1)
		return 1;
	else
		return n * factorial(n-1);
}

1.4. functions.h

#ifdef _FUNCTIONS_H_
#define _FUNCTIONS_H_
void printhello();
int factorial(int n);
#endif

2. make例子

2.1. makefile

cCOMP = g++
cFLAGS=  -Wno-deprecated -g -o

DIR_INC= -I/usr/include

INCLUDE = $(DIR_INC)

SRC = *.cpp *.h
OBJS	= main

$(OBJS):$(SRC) change
		$(cCOMP) $(cFLAGS) $(OBJS) $(SRC) $(INCLUDE)


change:
		touch main.cpp
.PHONY : clean
clean:
		rm -f $(OBJS)

如果c++的文件名尾缀为 .c, 则需要把上面代码中的 SRC = *.cpp *.h 修改为 SRC = *.c *.h

编译命令

make
./main