Linux下Makefile编写语法

原创

Linux下Makefile编写语法

Makefile样例:http://blog.chinaunix.net/uid-25100840-id-2047826.html

all : main.c foo1.c foo2.c foo3.c
        gcc main.c foo1.c foo2.c foo3.c -o all

targets:prerequisites
        command
或者
targets :prerequisites
        command

targets:目标文件名可以多个,空格隔开
prerequisite:依赖目标
command:命令行,命令太长用反斜杠\作为换行符,需要Tab作为开头

 

 

%代表任意长度串,空格不属于

 

 

 

 

在Makefile中使用命令要Tab开始,

否则会出现“遗漏分隔符,停止”。

变量有(=)和(:=)两种,前者会造成递归定义。

(?=)如果左边变量未定义则赋予右值。

变量使用需要$(变量)或者${变量}。

全局变量

 

 

 

define 变量
        命令
endef

全局变量

 

 

 

override 指示符

全局变量

 

 

 

 $@目标集合 $<依赖目标集合
     自动化变量 中$<属于规则性变量,依赖于规则的目标和依赖目标的定义

目标变量

自动化变量运行才有值

 

 

%.o :CFLAGS=-o

目标模式变量

 

 

 

$(function argument1,argument2)
${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)
foo=$(call reverse,a,b)

b a

 

$(origin variable)

Undefined未定义
Dafault默认定义 CC
environment环境变量
file被定义在Makefile
command line被命令行定义
override指示符重新定义
automatic一个命令运行中的自动化变量

 

 

 

$(shell shell命令)

生成一个shell程序来执行命令

$(shell echo just text)

just text

控制make的函数

$(error text)

 

ifdef ERROR_001
$(error error is $(ERROR_001))
endif

 

 

$(warning text)

 

 

 

模式规则

destiPattern:sourcePattern;command

%.o:%.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

 

 

@echo just text 

echo just text
just text

 

 

 

echo just text

just text

 

 

 

0 个人打赏
文章最后发布于: 2016-07-29 08:31:53
        

Linux基础——makefile编写

07-05 阅读数 1200

Makefile基本原则和原理makefile中的三要素:目标、依赖、命令目标:要生成的目标文件(在Makefile中会把第一个目标作为终极目标,一切以生成终极目标为最终目的)依赖:生成目标文件需要的... 博文 来自: daidaihema的博客

LinuxMakefile快速编写入门

05-09 阅读数 2581

(一)为什么要编写Makefile 我们自己平常在linux下编译源文件时,当然可以使用gcc-Wall-gmain.c-omain这样的命令一个一个编译,但是一个工程中的源文件不计其数,其按类型、功... 博文 来自: zjy900507的博客

Linux编写makefile文件

02-22 阅读数 9363

首先在vi编辑器下编写add.c              #include"test.h"#includeintadd(inta,intb){returna+b;}intmain(){printf(... 博文 来自: wangkuifeng0118的专栏

linux Makefile常用语法持续记录

03-11 阅读数 44

=、:=、?=、+=参数赋值=是最基本的赋值:=是覆盖之前的值?=是如果没有被赋值过就赋予等号后面的值+=是添加等号后面的值$@、$^、$&lt;、$?$@表示目标文件$^表示所有的依赖文件$... 博文 来自: 夏天Alex


Makefile 使用总结

09-24 阅读数 49

1.Makefile简介Makefile是和make命令一起配合使用的.很多大型项目的编译都是通过Makefile来组织的,如果没有Makefile,那很多项目中各种库和代码之间的依赖关系不知会多复杂... 博文 来自: weixin_33754913的博客

Linux makefile语法

05-10 阅读数 84

本文是集中若干篇博客的精华,在此一并表示感谢,文后也会附上相关博客链接。Begin:Makefile的前世今生1.gcc是GNUCompilerCollection(就是GNU编译器套件),也可以简单... 博文 来自: NCU_wander的博客

linux makefile语法及写法

04-03 阅读数 3686

http://blog.csdn.net/zhoubl668/article/details/3952967  最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makef... 博文 来自: chungle2011的专栏

Linux编程——makefile编写技巧大全 - bad_good_man的..._CSDN博客

8-23

LinuxMakefile编写及四个特殊符号的意义@、$@、$^..._CSDN博客

9-1

这传奇你卸载算我输!爆率9.8,不花一分钱,一刀7777亿! 贪玩游戏 · 顶新

很详细、很移动的Linux makefile 教程

09-04 阅读数 5

近期在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。... 博文 来自: weixin_30906701的博客

		
zhj失落之地关注
zhj失落之地

68篇文章

排名:千里之外

daidaihema关注
daidaihema

59篇文章

排名:千里之外

玛丽奥ZJY关注
玛丽奥ZJY

1133篇文章

排名:4000+

wangkuifeng0118关注
wangkuifeng0118

85篇文章

排名:2000+

LinuxMakefile的学习笔记以及多级目录下Makefile编写

03-11 阅读数 5471

一、Make简介:工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入... 博文 来自: zhemingbuhao的博客

Linux makefile 编写详细教程,浅显易懂

03-03 阅读数 647

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。... 博文 来自: Jerry

LinuxMakefile编写及四个特殊符号的意义@、$@、$^..._CSDN博客

5-20

Linuxmakefile 模板 - robertzhouxh的专栏 - CSDN博客

9-22

Linuxmakefile编写

06-08 阅读数 1205

##Simple.soMakefile#CC     :=gccLD     :=ldCFLAGS :=LDFLAGS:=-shared-fpicSOURCE :=$(wildcard*.c)OBJS... 博文 来自: 嵌入式相关

跟我一起写 Makefile(十四)

02-24 阅读数 84

使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。一、函数库文件... 博文 来自: 威尔软件

Linux Makefile文件编写详细步骤与实践

07-21 阅读数 1465

LinuxMakefile文件编写详细步骤与实践  1.makefile概述  Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不... 博文 来自: White Beard

Linux编写 makefile 详细教程

01-03 阅读数 208

本文转载自https://www.cnblogs.com/mfryf/p/3305778.html非常感谢Linux下编写makefile详细教程近期在学习Linux下的C编程,买了一本叫《Linux... 博文 来自: zhangji

Linux 应用---make及makefile编写

12-23 阅读数 1万+

Make在我们做linux开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。    Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现... 博文 来自: 知秋一叶

linux编写的一个最简单的Makefile文件

04-03 阅读数 1万+

Makefile核心要点:1.会不会写makefile从侧面说明了一个人是否具备完成大型项目开发大型工程的能力2.makefile是用来编译链接文件的,实现了自动化编译3.与make指令搭配,一条ma... 博文 来自: Steve_Abelieve

linux上gcc编译问题---math库函数

07-13 阅读数 1251

摘要:使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(... 博文 来自: Leonard's Blog

Linux编程之index和rindex函数

12-08 阅读数 456

在linux编程中,index和rindex函数是两个很有用的字符串处理函数。两个函数原型如下:#include&amp;amp;amp;amp;amp;amp;lt;string.h&... 博文 来自: Damocles_shi的博客

linux下的Makefile文件的简单写法和简单使用

07-17 阅读数 2898

linux下makefile简单基础,关于makefile的第一篇 博文 来自: sx758218950的博客

linux kernol Makefile 语法分析

01-27 阅读数 96

原文地址:Makefile语法分析 作者:小卒-IT Makefile语法分析第一部分VERSION=2#给变量VERSION赋值PATCHLEVEL=6#给变量PATCHLEVEL赋值SUBLEVE... 博文 来自: swj9099的博客

Linux下的Makefile文件编写

08-08 阅读数 603

1、Makefile文件的介绍答:在Linux下Makefile我们可以把理解为工程的编译规则。一个工程中源文件不计数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指... 博文 来自: Xiongchao99的博客

make 时必须指定文件作为MakeFile

09-12

所有.c,.h包括MakeFile文件都是放在gcc文件夹下的,刚刚接触,每次都指定的话有点麻烦了,哪位帮我看下问题出在哪里了,谢谢。 论坛

linuxmakefile语法学习1

07-24 阅读数 359

对于makefile,总是忘记,回过头复习,又太麻烦,希望自己把学习的写成日志模块;学习makefile,一定要知道依赖和目标的概念;目标就是我们最终生成的文件,依赖就是我们生成目标文件的文件,通常来... 博文 来自: u012498660的专栏

如何在linux下写makefile

06-24 阅读数 1417

Windows下用集成开发环境(IDE)开发程序时不会涉及到编译、链接的步骤,集成开发环境已经把这些工作给你集成好了,你要做的就是根据语言的语法来编写代码。所以Windows下开发程序对makefil... 博文 来自: 疯流人物

Linux makefile 教程 非常详细,且易懂

08-07 阅读数 414

跟我一起写Makefile陈皓(CSDN)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和pro... 博文 来自: fcryuuhou的专栏

Makefile中文教程

08-13 阅读数 246

Makefile中文教程1.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但要做一个好的和professional的程序... 博文

阿里资深工程师教你如何优化 Java 代码!

09-17 阅读数 0

博文

GitHub开源的10个超棒后台管理面板

09-21 阅读数 0

博文

100 个网络基础知识普及,看完成半个网络高手

09-23 阅读数 0

博文

Google离开我们快十年了

09-24 阅读数 0

博文

面试官的HTTP五连问法?我竟然回答不上来...

09-25 阅读数 0

博文

中国最顶级的一批程序员,从首富到首负!

09-24 阅读数 0

博文

为什么面向对象糟透了?

09-23 阅读数 0

博文

分享靠写代码赚钱的一些门路

09-26 阅读数 0

博文

对计算机专业来说学历真的重要吗?

09-27 阅读数 0

博文

在线就能用的Linux我给你找好了

09-27 阅读数 0

博文

世界上最好的学习法:费曼学习法

09-27 阅读数 0

博文

学Linux到底学什么

09-27 阅读数 0

博文

深入理解C语言指针

09-28 阅读数 0

博文

C语言实现推箱子游戏

09-29 阅读数 0

博文

面试官:兄弟,说说基本类型和包装类型的区别吧

09-29 阅读数 0

博文

8000字干货:那些很厉害的人是怎么构建知识体系的

09-29 阅读数 0

博文

Android完整知识体系路线(菜鸟-资深-大牛必进之路)

09-29 阅读数 0

博文

C语言这么厉害,它自身又是用什么语言写的?

09-27 阅读数 0

博文

Java版的7种单例模式

09-30 阅读数 0

博文

彻底搞懂JVM类加载器:基本概念

10-01 阅读数 0

博文

开源大阅兵:盘点那些走向世界的中国项目

10-02 阅读数 0

博文

计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路

10-03 阅读数 0

博文

Python使用tkinter模块实现推箱子游戏

10-06 阅读数 0

博文

认真推荐几个不错的技术公众号

10-03 阅读数 0

博文

NULL,0,`0`,`\0`,"0"你分得清吗?

10-04 阅读数 0

博文

Python 愤怒的小鸟代码实现(1):物理引擎pymunk使用

10-06 阅读数 0

博文

国产阿里OCEANBAS勇夺TPC-C冠军,200行代码解读它的速度源头

10-04 阅读数 0

博文

Java 初级面试题(持续更,近期更新时间:2019/10/11)

10-04 阅读数 0

博文

前端开发必备网站推荐

10-05 阅读数 0

博文

中国物联网激荡20年

10-05 阅读数 0

博文

写个最简单的植物大战僵尸修改器吧!c和python

10-05 阅读数 0

博文

【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!

10-06 阅读数 0

博文

Vue 3.0 源码开放,看看都有哪些新特性

10-06 阅读数 0

博文

            
                        

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

打赏

Datrilla

“你的鼓励将是我创作的最大动力”

5C币 10C币 20C币 50C币 100C币 200C币
        

你可能感兴趣的:(Linux,Makefile)