Makefile变量】的更多相关文章

在定义变量的值时,我们可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值. 先看第一种方式,也就是简单的使用“=”号,在“=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值.如: foo = $(bar)bar = $(ugh)ugh = Huh? all:echo $(foo) 我们执行“make all”将会打出变量$(foo)的值是“Huh?”( $(foo)的值是…
自定义变量 = 是最基本的赋值,会把整个makefile展开之后再决定是多少 x=foo y=$(x)bar #y是asdbar,不是foobar x=asd := 是覆盖之前的值,和=不同,和赋值的位置有关 x=foo y:=$(x)bar #y是foobar x=asd ?= 是如果没有被赋值过就赋予等号后面的值,赋过了就不管了 += 是添加等号后面的值 变量的使用 和shell一样,makefile通过$(FLAGS)来读取变量FLAGS的值,对于$本身,使用$$读取 变量替换 注意这两种…
在 Makefile 中的定义的变量,就像是 C/C++语言中的宏一样,他代表了一个文本字串,在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方.其与 C/C++所不同的是,你可以在 Makefile 中改变其值.在 Makefile 中,变量可以使用在"目标","依赖目标","命令"或是 Makefile 的其它变量中. 变量的命名字可以包含字符.数字,下划线(可以是数字开头),但不应该含有":".&qu…
Makefile中给变量赋值: =     是递归展开式变量 value1 = 5 value2 = $(value1) value1 = 6 最终$(value2)就变成了6 :=    是直接展开式变量 value1 := 5 value2 := $(value1) value1 :=6          最终$(value2)是5     GUN make的执行过程分为两个阶段. 第一阶段:读取所有的makefile文件(包括“MAKEFILES”变量指定的.指示符“include“指定的…
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/770.html   使用变量: 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方.其与C/C++所不同的是,你可以在Makefile中改变其值.在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”…
六.七年前写过一篇<跟我一起写Makefile>,直到今天,还有一些朋友问我一些Makefile的问题,老实说,我有一段时间没有用Makefile了,生疏了.回顾,这几年来大家问题我的问题,其实很多时候是makefile的调试问题.所以,就像我在之前的那篇关于GDB的技巧的文章中做的一样,在这里向大家介绍一个小小的调试变量的技巧.相信一定对你有用. 对于Makefile中的各种变量,可能是我们比较头痛的事了.我们要查看他们并不是很方便,需要修改makefile加入echo命令.这有时候很不方便…
makefile是为组织程序工程的,其定义的宏怎样应用到c程序中呢? 我们知道Makefile中可定义变量或导出变量,make命令可定义变量:编译器(如gcc)可通过CFLAGS定义宏. 但如何才能使Makefile或make命令用变量控制C程序呢? C程序可以接收编译器定义的宏,通过-D指定.makefile中将make命令或makefile中变量通过编译器-D参数传递到C程序是关键. 宏定义使用前缀-D,在编译过程中可以把宏定义追加到CFLAG中.宏定义有两种相似的写法 [第一种]-D DE…
Makefile可以使用变量代替 命令行:make -f Makefile2 说明开始make一个名为Makefile2的文件 ###############定义变量################## CC:=gcc CFLAGS:=-Iinclude CFLAGS+= -c TARGET:=bin/mymath_test DEPEND:=obj/mymath.o DEPEND+=obj/mymath_test.o $(TARGET):$(DEPEND) $(CC) -o $@ $^ obj/…
鉴于之前有一些了解,还有自己的学习习惯,我一上来就看Makefile的变量这一章.主要脉络是根据GNU make中文手册. 第六章:Makefile中的变量 6使用变量 定义:变量是一个名字,代表一个文本字符串:类似C语言中的宏 区别在于这个变量在Makefile的目标.依赖.命令中引用的地方会被它的值所取代: 特征:1.Makefile中变量和函数的展开(除了规则命令行)是在make读取makefile文件时进行的: 2.变量可用于代表:一个文件名列表.编译选项列表.程序运行的选项参数列表(C…
我们在写makefile时 多多少少会用到shell脚本, 对于变量的在shell中的使用有一些要注意的细节.让我们从一个简单的makefile来看看. 注意makefile中一定要有一个目标,且一定要有一个终极目标,若想要有多个目标应该设立一个伪目标.如下: all: hello hello2 hello3 hello: hello.c gcc .... hello2: hello2.c gcc ... hello3: hello3.c gcc ... shell变量定义和使用: NAME=h…
原文链接:http://www.orlion.ga/816/ 一.基本规则 对于一个拥有多个文件的c项目,编译时可能是这样的指令: gcc main.c stack.c -o main 如果编译之后又对stack.c进行了修改,则又要重新把所有的源文件编译一遍,即使main.c和那些头文件都没有修改也要跟着重新编译,一个大型项目往往上千个源文件组成,全部编译要几个小时,只改一个源文件就要重新编译显然不合理.如果是一下的编译方式会好一些: gcc -c main.c gcc -c stack.c…
1.Makefile格式 //最终目标 all: led.o //依赖 arm-linux-ld -Tled.lds -o led.elf led.o //命令 arm-linux-objcopy -O binary led.elf led.bin //命令 //目标 led.o : led.S//依赖 arm-linux-gcc -g -o led.o -c led.S //命令 .PHONY: clean //伪目标--无依赖 clean: rm *.o led.elf led.bin //…
转自:http://www.firekyrin.com/archives/597.html 编译选项 让我们先看看 Makefile 规则中的编译命令通常是怎么写的. 大多数软件包遵守如下约定俗成的规范: #1,首先从源代码生成目标文件(预处理,编译,汇编),"-c"选项表示不执行链接步骤. $(CC) $(CPPFLAGS) $(CFLAGS) example.c -c -o example.o #2,然后将目标文件连接为最终的结果(连接),"-o"选项用于指定输…
1.规则 规则定义格式如下 目标 : 条件1 条件2 ... 命令1 命令2 ... 隐含规则和模式规则(略) 2.变量 Makefile变量像C的宏定义一样,代表一串字符,在取值的地方展开. 1)两种定义方式 用'='定义的变量会延迟展开,即在真正需要取值的时候才会展开:用':='定义的变量则是在变量定义时立即展开. 2)'?='运算符 '?='是赋值运算符,例如foo ?= $(bar)的意思是:如果foo没有定义过,那么?=相当于=,定义foo的值是$(bar),但不立即展开:如果先前已经…
一个简单的Makefile描述规则组成: TARGET...:PREREQUISITES... COMMANDS... ... target:规则的目标.通常是程序中间或者最后要生成的文件名,也可以是伪目标. prerequisites:规则的依赖.生成规则目标所需要的文件名列表.通常一个目标依赖于一个或者多个文件. commands:规则的命令行,每条占一行,必须以[TAB]开头. GNUMake的执行过程: 第一阶段:读取所有的makefile文件(包括“MAKEFILE”变量指定的,提示符…
linux make手册:http://www.gnu.org/software/make/manual/make.html 一篇文章: 假设我们有一个程序由5个文件组成,源代码如下:/*main.c*/#include "mytool1.h"#include "mytool2.h"int main(){         mytool1_print("hello mytool1!");         mytool2_print("he…
Makefile有很多灵活的写法,可以写得更简洁,同时减少出错的可能.本节我们来看看这样一个例子还有哪些改进的余地. 一个目标依赖的所有条件不一定非得写在一条规则中,也可以拆开写,例如: main.o: main.h stack.h maze.h main.o: main.c gcc-c main.c 就相当于: main.o: main.c main.h stack.h maze.h gcc-c main.c 如果一个目标拆开写多条规则,其中只有一条规则允许有命令列表,其它规则应该没有命令列表…
http://www.linuxidc.com/Linux/2012-04/59093.htm 大家经常编写和使用Makefile, Makefile里面也经常用到shell, 但对其中一些需要注意的地方未必会去留意, 这里列出几个来, 不知是否对大家有用.1. 注意Makefile的变量和shell变量, 看如下示例:    DIRS = src bin lib   all:    @for i in $(DIRS); /     do /         echo " " $$i;…
Linux Makefile文件编写详细步骤与实践 1.makefile概述 Windows环境下IDE会帮你完成makefile文件的编写,但在UNIX环境下你就必须自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefile关系到了整个工程的编译规则.一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进…
http://blog.csdn.net/ghostyu/article/details/6866863 在我前一篇写的[ linux驱动学习(一)Makefile基础]中,Makefile写的中规中矩,其实Makefile写法很灵活,可以写得很简洁,而且减少出错的可能,现在就把之前写的Makefile改进一下. main: main.o hello.o word.o gcc main.o hello.o word.o -o main main.o:main.h hello.h word.h h…
简单介绍 1)make:利用 make 工具能够自己主动完毕编译工作.这些工作包含:假设仅改动了某几个源文件,则仅仅又一次编译这几个源文件[make通过比对对应的.c文件与.o文件的时间];假设某个头文件被改动了,则又一次编译全部包含该头文件的源文件.利用这样的自己主动编译可大大简化开发工作,避免不必要的又一次编译. 2)Mackfile:make工具通过一个称为 Mackfile 的文件来完毕并自己主动维护编译工作.Mackfile文件描写叙述了整个project的编译.连接等规则. Mack…
转载自 陈皓<跟我一起写 Makefile><GNU Make项目管理> GNU make 提供了若干可以协助调试的内置函数以及命令行选项. 1.warning函数 $(warning string)函数可以放在makefile 中的任何地方,执行到该函数时,会将string输出,方便定位make执行到哪个位置.warning函数可以放在makefile 中的任何地方:开始的位置.工作目标或必要条件列表中以及命令脚本中.这让你能够在最方便查看变量的地方输出变量的值.例如: $(wa…
仅供自己学习使用 一.Makefile介绍 Makefile 或 makefile: 告诉make维护一个大型程序, 该做什么.Makefile说明了组成程序的各模块间的相互 关系及更新模块时必须进行的动作, make按照这些说明自动地维护这些模块. 执行make命令时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序. Makefile是一个文本形式的数据库文件,其中包含一些规则来告诉make处理哪些文件以及如何处理这些文件.这些规则主要是描述哪些文件(称为ta…
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发…
1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile).然后再把大量的Object File合成执行文件,这个动作叫作链接(link). 1.1编译 编译时编译器只检查语法是否正确,函数与变量的声明是否正确.如果函数未被声明,编译器会给出一个警告,但可以生成Object File.一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件).…
概述 什么是makefile?或许很多Winodws程序员都不知道这个东西,因为那些Windows IDE都为你做了这个工作,但我觉得要做一个好的和professional的程序员,makefile还是要懂的.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makefile关系到了整个工程的编译规…
最近越来越感觉到,在linux下面身为一个程序员,不会makefile就不是一个合格的程序员,所以今天我们介绍下常用的makefile编写. 了解知识: 编译:把高级语言书写的代码转换为机器可识别的机器指令.编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行.编译时,编译器检查高级语言的语法.函数与变量的声明是否正确.只有所有的语法正确.相关变量定义正确编译器就可以编译出中间目标文件.通常,一个高级语言的源文件都可对应一个目标文件.目标文件在Linux 中默认后缀为".o"(如…
引言  - 从"HelloWorld"开始 Makefile 是Linux C 程序开发最重要的基本功. 代表着整个项目编译和最终生成过程.本文重点是带大家了解真实项目中那些简易的Makefile规则构建. 本文参照资料 GNU make   -  https://www.gnu.org/software/make/manual/make.html 跟我一起写Makefile  - http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%8…
转自:http://blog.csdn.net/ghostyu/article/details/6866863 版权声明:本文为博主原创文章,未经博主允许不得转载. 在我前一篇写的[ linux驱动学习(一)Makefile基础]中,Makefile写的中规中矩,其实Makefile写法很灵活,可以写得很简洁,而且减少出错的可能,现在就把之前写的Makefile改进一下. [plain] view plain copy main: main.o hello.o word.o gcc main.o…
makefile变量说明: 1.总控Makefile中使用“-e”参数覆盖下一层Makefile中的变量. 2.父级Makefile向子级Makefile传送变量方式:export <variable ...> 3.禁止父级Makefile向子级Makefile传送变量:unexport <variable ...> 4.传递所有只要一个export就行,后面什么也不用跟. 5.两个系统变量SHELL,MAKEFLAGS,总是要传递到下层Makefile中 6.MAKEFILES包…