我的Makefilee模板

  在Linux下开发,使用Makefile组织源码工程师基本功。在本篇文章中会介绍Makefile的基础知识以及Dock经常使用的Makefile函数及模板。

Makefile.jpg

1.基本概念

  每一个Makefile选项都是由 TargetPrerequisiteFunction三部分组成,如:

1
2
target: prerequisites
command

一个实例如下:

1
2
hello: hello.c
gcc hello.c -o hello

这样在我们使用 make hello的时候,就会调用 gcc hello.c -o hello命令。

2.常用函数

  通配函数,下面这个会通配所有以 .cpp结尾的文件。如当前文件夹下有a.cpp  b.c  c.cpp,那么 SRC_CPP的值就会是 a.cpp  c.cpp

1
SRC_CPP = $(wildcard *.cpp)

  替换函数。我们在实际开发中常用到的一点就是讲.cpp .c转换为.o文件,但是总不能一个一个去敲吧。那么替换函数就派上用场了。

1
OBJS += $(patsubst %c, %o, $(SRC_C))

上面这条就是把 $SRC_C中每一项的c换为 o

3.Makefile模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#CXX = g++
#CC = gcc
CXX = arm-linux-gnu-g++
CC = arm-linux-gnu-gcc

CXXFLAGS = -pthread -Wall -std=c++11
INCLUDE_PATH = -I./inc

SRC_CPP = $(wildcard *.cpp)
SRC_C += $(wildcard ./*.c)

OBJS += $(patsubst %c, %o, $(SRC_C))
OBJS += $(patsubst %cpp, %o, $(SRC_CPP))

TARGET=Hello #自定义自己的目标文件

$(TARGET):$(OBJS)
$(CXX) $^ $(CXXFLAGS) -o $@ -L./ -lsxtl

.cpp.o: #cpp 编译成 o
$(CXX) -c $(CXXFLAGS) $(INCLUDE_PATH) $< -o $@

.c.o: # c 编译成 o
$(CXX) -c $(CXXFLAGS) $(INCLUDE_PATH) $< -o $@

clean:
rm $(OBJS)
rm $(TARGET)

每次Dock需要重新配置一个Makefile的时候就会将上边这个Makefile修改一下,适配新工程。

版权声明:本文为博主原创文章,转载需声明为转载内容并添加原文地址。

原文地址:https://coderdock.com

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2020 Dock
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信