Makefile使用

介绍

  • 当一个工程里面的源文件非常多时,手动敲命令就比较麻烦,就可以使用makefile;
  • Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就像一个 Shell 脚本一样,也可以执行操作系统的命令;
  • Makefile 带来的好处就是“自动化编译” ,一旦写好,只需要一个 make 命令,整个工程完全自动编译;
  • make 是一个命令工具,是一个解释 Makefile 文件中指令的命令工具;

使用

文件命名

makefile 或者 Makefile

Makefile 规则

  • 一个 Makefile 文件中可以有一个或者多个规则

    • 目标 … : 依赖 …
    • 命令(Shell 命令)
  • 目标:最终要生成的文件(伪目标除外)

  • 依赖:生成目标所需要的文件或是目标

  • 命令:通过执行命令对依赖操作生成目标(命令前必须 Tab 缩进)

  • Makefile 中的其它规则一般都是为第一条规则服务的

  • 自定义变量

    • 定义:变量名=变量值,例如 var=hello
    • 使用:获取变量的值,即 $(var)
  • 预定义变量

    • AR : 归档维护程序的名称,默认值为 ar
    • CC : C 编译器的名称,默认值为 cc
    • CXX : C++ 编译器的名称,默认值为 g++
    • ……

简单举例

1
2
3
4
5
6
7
8
9
10
11
12
13
CXX = g++
CFLAGS = -std=c++17 -O2 -g -Wall

TARGET = serverApp
OBJS = ../code/buffer/*.cpp ../code/http/*.cpp ../code/logsys/*.cpp \
../code/pool/*.cpp ../code/server/*.cpp ../code/timer/*.cpp \
../code/json/*.cpp ../main.cpp

all:
$(CXX) $(CFLAGS) $(OBJS) -o ../$(TARGET) -pthread -lmysqlclient

clean:
rm -rf ../$(TARGET)

一般我们写好makefile后只需运行:

1
make

若想清理生成的文件:

1
make clean


Makefile使用
http://example.com/2022/07/23/Makefile使用/
作者
ZYUE
发布于
2022年7月23日
更新于
2022年7月31日
许可协议