Linux Makefile文件模板

1、编译驱动的Makefile文件模板:

ifneq ($(KERNELRELEASE),)
obj-m := test.o
else
#KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build       #for ubuntu
KERNEL_DIR ?= /home/kernel/ # for 内核路径
PWD := $(shell pwd)
default:
    $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
endif
clean:
    rm -rf *.o *.order *.mod.* *.ko *.symvers

2、编译c/c++文件的Makefile文件模板:

CC=gcc
CXX=g++ -std=c++11
CFLAGS=-Wall -g -O2
ALL=usbtocan
OBJECT=usbtocan.o main.o
LIB=-lpthread
%*.o:%*.cpp
        $(CXX) -c $(CFLAGS) $< -o $@ $(LIB)
$(ALL):$(OBJECT)
        $(CXX) $(LIB) $(CFLAGS) -o $@ $^
 
.PHONY:clean
clean:
    rm -rf $(ALL) $(OBJECT)

3、带文件夹的文件模板

INC_DIR:=./include
SRC_DIR:=./src
OBJ_DIR:=./obj
BIN_DIR:=./bin
 
SRC=${wildcard ${SRC_DIR}/*.cpp}                                 #扩展通配符
OBJ=${patsubst %.cpp, ${OBJ_DIR}/%.o,${notdir ${SRC}}}           #替换通配符
 
CC:=g++
CPPFLAGS:=-Wall -lpthread -std=c++11 -I${INC_DIR} #-g -rdynamic
TARGET=server
BIN_TARGET=$(BIN_DIR)/$(TARGET)
 
$(BIN_TARGET):$(OBJ)
    $(CC) $(OBJ) -o $@ $(CPPFLAGS)
 
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp
    $(CC) $(CPPFLAGS) -c $< -o $@
    
.PHONY:clean
clean:
    find $(OBJ_DIR) -name *.o -exec rm -rf {} \;

(完成)

你可能感兴趣的:(Linux Makefile文件模板)