美文网首页
2020-07-16 makefile 简单语法

2020-07-16 makefile 简单语法

作者: JOE_30f2 | 来源:发表于2020-07-16 09:15 被阅读0次

语法

  • wildcard : 扩展通配符
  • notdir : 去除路径
  • patsubst :替换通配符

patsubst函数

这是个模式替换函数
格式:$(patsubst <pattern>,<replacement>,<text> )
名称:模式字符串替换函数——patsubst。
功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹 配的话,则以<replacement>替换。这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如 果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将 是<pattern>中的那个“%”所代表的字串。(可以用“\”来转义,以“%”来表示真实含义的“%”字符)
返回:函数返回被替换过后的字符串。

简单实例

  • TEST目录树形图
TEST/
├── inc
│   ├── a.h
│   ├── b.h
│   └── c.h
├── lib
│   └── test.a
├── log
├── Makefile
└── src
    ├── a.c
    ├── b.cpp
    └── c.cc

  • 针对TEST简单Makefile
TARGET = test

path := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))

SRC_PATH = $(path)/src
OBJ_PATH = $(path)/obj

INC_PATH = -I$(path)/inc
LIB_LINK = -L$(path)/lib

SOURCE=$(wildcard $(SRC_PATH)/*.c) $(wildcard $(SRC_PATH)/*.cpp) $(wildcard $(SRC_PATH)/*.cc)
DIR=$(notdir $(SOURCE))
OBJS= $(patsubst %.c,$(OBJ_PATH)/%.o,$(patsubst %.cpp,$(OBJ_PATH)/%.o,$(patsubst %.cc, $(OBJ_PATH)/%.o, $(DIR))))

CPPFLAGS = -m32 -g -Wall -std=c++11 
CC = g++

LOCAL_LIB = -ltest

LIB = -lpthread
all: desc $(TARGET)

desc:
    @echo "=======================================SOURCE========================================================"
    @echo $(SOURCE)
    @echo "========================================DIR=========================================================="
    @echo $(DIR)
    @echo "=======================================OBJS=========================================================="
    @echo $(OBJS)
    @echo "======================================================================================================"

$(TARGET) : $(OBJS)
    $(CC) ${CPPFLAGS} -o $@ $^  $(LIB_LINK) $(LOCAL_LIB) $(LIB)

$(OBJ_PATH)/%.o:  $(SRC_PATH)/%.c
    ${CC} -c ${CPPFLAGS} $(INC_PATH) -o $@ $<

$(OBJ_PATH)/%.o:  $(SRC_PATH)/%.cpp
    ${CC} -c ${CPPFLAGS} $(INC_PATH) -o $@ $<

$(OBJ_PATH)/%.o:  $(SRC_PATH)/%.cc
    ${CC} -c ${CPPFLAGS} $(INC_PATH) -o $@ $<


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

相关文章

网友评论

      本文标题:2020-07-16 makefile 简单语法

      本文链接:https://www.haomeiwen.com/subject/mzvuhktx.html