Makefile变量】的更多相关文章

在定义变量的值时,我们可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值. 先看第一种方式,也就是简单的使用“=”号,在“=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值.如: foo = $(bar)bar = $(ugh)ugh = Huh? all:echo $(foo) 我们执行“make all”将会打出变量$(foo)的值是“Huh?”( $(foo)的值是…
鉴于之前有一些了解,还有自己的学习习惯,我一上来就看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 开发…
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路线图,帮助新人尽快上手. 本文介绍的我所在小组的一些开发流程及相关工具.做为新人入门手册,其中某些工具可能只有我们这边在用,但对于其他公司的新人来说,一样是具有指导意义的. 2015.4.11 更新: 增加构建工具 Bazel, CMake介绍 增加Linux下任务管理相关命令 增加正则表达式调试的…
GCC 编译优化指南(转) http://www.jinbuguo.com/linux/optimize_guide.html 作者:金步国 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件. 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处. 其他作品 本文作者十分愿意…
翻译qmake文档 目录 本章原英文文档:http://qt-project.org/doc/qt-5/qmake-common-projects.html 构建常见的项目类型        本章描述如何设置基于Qt的应用程序.库和插件的三种常见项目类型的qmake项目项目文件.虽然所有的项目类型使用大量相同的变量,但是它们中的每一个都使用项目特定的变量来自定义输出文件.      这里不会描述特定于平台的变量.更多详细修改请查看  Qt for Windows - Deployment 和 Q…
#Linux第二次实验(第三周) 学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 熟练使用gdb调试技术 熟悉makefile基本原理及语法规范 掌握静态库和动态库的生成 VI的使用 1.VI的模式 (1)命令行模式 (2)插入模式 (3)底行模式 2.VI的基本流程 (1)进入vi,即在命令行下输入"vi hello",进入命令行模式. (2)在命令行模式下输入i进入插入模式. (3)在插入模式中,按"…
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.Gcc不仅功能强大,而且可以编译如C.C++.Object C.Java.Fortran.Pascal.Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译.本章中的示例,除非特别注明,否则均采用Gcc版本为4.0.0. GCC入门基础 表3.6 Gcc所…
一.makefile 变量 makefile中的变量名是大小写敏感的,例如”foo”和”Foo”是两个不同的变量.通常情况下,对于一般变量,我们可以使用小写形式,而对于参数变量,采用全大写形式.当我们定义好一个变量后,采用”$(VARIABLE_NAME)”或者”${VARIABLE_NAME}”形式使用这个变量.所有在命令或者文件名中使用"$"时需要使用两个”$$”来表示.变量的展开可以看作是C语言中的宏展开,是一个文本替换过程. 1 两种定义变量的方式 1.1  递归展开式变量 使…
转自: http://www.jinbuguo.com/linux/optimize_guide.html GCC 编译优化指南 作者:金步国[www.jinbuguo.com] 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件. 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并…
first and foremost, 很久没写了,心痒了,手贱了,于是乎在这一刻心静时,积攒的思绪开始回放了,惊世Copy-on-write之文随之面世了; 臭毛孩子拉的 屎 特臭,小毛孩子前途黯淡,犹如小蝇虫趴在玻璃窗上; 忧患致生,致强;安乐致死,致灭; Let's  go 随心悦动,随心狂放吧,能够超越的,等待去征服的,............; 亲,若你以为ruiy哥的文章东扯,西说的,那就对了,为什么我不会告诉你,大脑在你脑袋上,我无法左右,最多一个人只能为一颗脑袋做主; 哥认为,搞…
GNU Make 使用手册(中译版) 翻译:于凤昌 译者注:本人在阅读Linux源代码过程中发现如果要全面了解Linux的结构.理解Linux的编程总体设计及思想必须首先全部读通Linux源代码中各级的Makefile文件.目前,在网上虽然有一些著作,但都不能全面的解释Linux源代码中各级的Makefile文件,因此本人认真阅读了GNU Make 使用手册(3.79)版原文,在此基础上翻译了该手册,以满足对Linux源代码有兴趣或者希望采用GCC编写程序但对缺乏GNU Make全面了解之人士的…
一.安装过程   1.CodeViz的安装 0).确认你已经安装Graphviz[ http://www.graphviz.org/] 1).下载CodeViz.[ http://www.csn.ul.ie/~mel/projects/codeviz/] 具体过程如下: 比如:我下载的是最新的一个版本:codeviz-1.0.11.tar.gz 下面的${CODEVIZ}指的是该文件解压后的目录. a).tar xzvf codeviz-1.0.11.tar.gz b).cd ${CODEVIZ…
GNU make 指南 翻译: 哈少 译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法.而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具.如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值.也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的.希望本文可以为中国的 Unix 编程初学者提供一点儿有用的资料.中国的 Linux 用户除了学会安…
原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd0100z3o9.html Android编译过程比较长,配置起来也很麻烦.现仅就工作遇到的问题做个总结.所用硬件平台为amlogic stvm3. ---------------------------------------------------------------------------关于版本号:文件build/core/version_defaults.mk用来检查一些跟版本相关的变量是否定义…