C++之makefile学习记录

makefile的规则

target ... : prerequisites ...
    command
    ...
    ...

target
可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。
prerequisites
生成该target所依赖的文件和/或target
command
该target要执行的命令(任意的shell命令)

windows下的一个示例

makefile
#链接
run.exe : main.o function.o
	g++ -o run main.o function.o
#编译
main.o : main.cpp 
	g++ -c main.cpp
function.o : function.cpp 
	g++ -c function.cpp
#清理
clean :
	del run.exe main.o

然后在该目录下直接输入命令 make 就可以生成执行文件run.exe。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下 make clean 就可以了。

main.cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int add(int, int);
int main() {
    int a = 3, b = 4;
    cout << add(a, b);
    return 0;
}
function.cpp
#include <iostream>

int add (int a, int b) {
    return a + b;
}

make如何工作

make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
1.如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“run.exe”这个文件,并把这个文件作为最终的目标文件。
2.如果run.exe文件不存在,或是run.exe所依赖的后面的 .o 文件的文件修改时间要比 run.exe 这个文件新,那么,他就会执行后面所定义的命令来生成 run.exe 这个文件。
3.如果 run.exe 所依赖的 .o 文件也不存在,那么make会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。(这有点像一个堆栈的过程)
4.当然,你的Cpp文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生成make的终极任务,也就是执行文件 run.exe 了。

tips

1.cpp文件用g++编译而不是gcc编译,因为gcc不含C++标准库
2.clean在linux下用rm进行删除,但windows下没有rm命令,所以用del

参考文档

makefile介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值