Makefile基础知识

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

Makefile.jpg

1.基本概念

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

target: prerequisites
          command

一个实例如下:

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

SRC_CPP = $(wildcard *.cpp)

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

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

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

3.Makefile模板

#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修改一下,适配新工程。

你可能感兴趣的:(Makefile基础知识)