学习Makefile笔记

来源:互联网 发布:东莞人工智能公司 编辑:程序博客网 时间:2024/06/06 10:00

一常用函数

1wildcard

 SOURCES= $(wildcard *.c)  

这行会产生一个所有以 '.c'结尾的文件的列表,然后存入变量 SOURCES

 

2patsubst

OBJS =$(patsubst %.c,%.o,$(SOURCES)).................(1)

三个参数,第一个参数是patsubst+匹配格式,第二个参数是目标转换成的匹配格式,第三个参数是源字符串

OBJS =$(FILES:%.c=%.o)  作用与命令(1)相同


3addprefix

 $(addprefix <prefix>,<names...>)

把前缀<prefix>加到<names>中的每个单词后面,返回加过前缀的文件序列

4notdir

notdir把展开的文件的路径去掉,只显示文件名而不包含其路径信息

 FILES =$(notdir $(SOURCES))

这行的作用是把上面以'.c'结尾的文件的文件列表中附带的路径去掉,只显示符合条件的文件名。

 

5filter

函数$(filter,<pattern…>,text)

保留text中符合<pattern>中的字符串

 

6firstword

函数$(firstword<text>),功能取回<text>中第一个单词

二自动变量

自动变量含义$@目标集合$%当目标是函数库文件时,表示其中的目标文件名$<第一个依赖目标。如果依赖目标是多个,挨个表示依赖目标$?比目标新的依赖目标的集合$^所有依赖目标的集合,去除重复的依赖目标$+所有依赖目标的集合,不去除重复的依赖的目标$*这个是GNU make特有的,其他的make不一定支持

三常用的变量名


四制定Makefile

make -f test.mk

五自己写的Makefile模板

CXX=g++CC=gccBIN_DIR=binSRC_DIR=srcINCLUDE_DIR=-I./include -I./include1SOURCES=$(wildcard $(SRC_DIR)/*.cpp)OBJECTS=$(patsubst %.cpp, %.o, $(SOURCES))INCLUDE=$(wildcard $(INCLUDE_DIR)/*)CXXFLAGS=LDFLAG=BIN=$(BIN_DIR)/aaa.PHONY=all cleanall:$(BIN)$(BIN):$(OBJECTS)@echo "aa"$(CXX) -o $@ $^ %.o:%.cpp@echo "bb"$(CXX) $(INCLUDE_DIR) -c $(CXXFLAGS) -o $@ $^ $(LDFLAG)        clean:rm -rf $(BIN) $(OBJECTS)



0 0
原创粉丝点击