all : main.c foo1.c foo2.c foo3.c | targets:prerequisites | targets:目标文件名可以多个,空格隔开 | ||
%代表任意长度串,空格不属于 | ||||
在Makefile中使用命令要Tab开始, 否则会出现“遗漏分隔符,停止”。 变量有(=)和(:=)两种,前者会造成递归定义。 (?=)如果左边变量未定义则赋予右值。 变量使用需要$(变量)或者${变量}。 | 全局变量 | |||
define 变量 | 全局变量 | |||
override 指示符 | 全局变量 | |||
$@目标集合 $<依赖目标集合 | 目标变量 | 自动化变量运行才有值 | ||
%.o :CFLAGS=-o | 目标模式变量 | |||
$(function argument1,argument2) | 函数调用 | |||
若干个单词串处理函数 | $(subst replaceword,newword,sourceText | $(subst ee,EE,feet on the street) | fEEt on the strEEt | |
空返回‘ ’ | $(patsubst pattern,replacement,sourcetext) | $(patsubst %.c,%.o,x.c.c bar.c) | x.c.o bar.o | |
$(findstring find,sourcetext) | 有返回对应,否则' ' | |||
$(filter pattern1 pattern2 ,sourceText) | 过滤器,返回SourceText符合 %.后缀的模式 | |||
$(filter-out pattern1 pattern2,sourceText) | 反过滤,返回不符合对应模式的 | |||
$(sort word1 word2) | 字母序升序排序且去重 | |||
$(word index_1,sourceText) | 取第index个单词(单词不是字符),从1开始 | |||
$(wordlist fromIndex_1,toIndex_1,sourceText) | 去从fromIndex到toIndex的文本单词 | |||
$(words sourceText) | 统计单词个数 | |||
$(firstword sourceText) | 返回首单词 | |||
文件名操作函数 | $(dir name1 name2) | 取目录函数,返回文件所在目录,不包括文件名 | $(dir usr/e/hha.c dd) | usr/e/ ./ |
$(notdir name1 name2) | 取文件名 | $(notdir usr/e/hh.c dd) | hh.c dd | |
$(suffix name1 name2) | 取后缀,无后缀‘ ’ | |||
$(basename name1 name2) | 取前缀,无前缀‘ ’ | |||
$(addsuffix suffix,sourceText) | 加后缀 | |||
$(addprefix prefix,sourceText) | 加前缀 | |||
$(join list1,list2) | 连接函数,对应index的连接,无对应自己 | |||
$(foreach oneOfList,list,EveryDealText) | 循环函数,list中取之局部变量oneOfList中,用到处理部分,每个返回空格连接 | |||
条件判断函数 | ifeq (arg1,arg2) endif | if equal 判断是否相等?真:假; | ||
ifneq (arg1,arg2) endif | 判断是否不等?真:假; | |||
ifdef variable-name endif | 变量有值?真:假; | |||
ifndef variable-name endif | 变量空值?真:假; | |||
$(if condition,then_part,else_part) | ||||
$(if condition,then_part) | ||||
其他函数 | $(call expression,parm1,parm2) | 在expression中用到后面的parm1用$(1) | reverse=$(2) $(2) | b a |
$(origin variable) | Undefined未定义 | |||
$(shell shell命令) | 生成一个shell程序来执行命令 | $(shell echo just text) | just text | |
控制make的函数 | $(error text) | ifdef ERROR_001 | ||
$(warning text) | ||||
模式规则 | destiPattern:sourcePattern;command | %.o:%.c | ||
@echo just text | echo just text | |||
echo just text | just text |
Linux下Makefile编写语法
原创
©著作权归作者所有:来自51CTO博客作者datrilla的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Linux_常用命令
下一篇:PL/sql_EXISTS
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
linux之makefile编写2
在上一篇博文《linux之makefile编写、Linux模块化编程1(最简单的方法)》中我们介绍了makefile最基础的应用。今天我们来看一下稍微深层次一点的
linux 模块化编程 main函数 主函数 当前目录 -
编写和使用Linux Makefile
通过Makefile,我们可以定义项目中的目标、依赖关系和命令,使得项目的构建和维护更加高效和可靠。在实际
linux pycharm 运维 java Java -
linux下Makefile学习
!概述——什么是makefile?或许很多Wi
shell c/c++ awk 目标文件 文件名 -
Linux下gcc与g++用法以及编写makefile
(本文主要以gcc为演示,如果是C++程序直接将给 gcc改为g++即可)1. gcc与g++编译流程:1) 编译流程:2) &n
Linux gcc makefile 休闲 g++