Makefile && shell

以下均来自 网络 收集,自己整理了一下,只整理了以前不熟悉,而目前会用到的一些东西:
一:Makefile中 变量 定义的方式:
 1.递归展开方式,递归展开方式定义的变量是在引用在该变量时进行替换的,即如果该变量包含了对其他变量的 应用 ,则在引用该变量时一次性将内嵌的变量全部展开,虽然这种类型的变量能够很好地完成 用户 的指令,但是它也有严重的缺点,如不能在变量后追加内容(因为语句:CFLAGS = $(CFLAGS) -O在变量扩展过程中可能导致无穷循环)。
 2.简单方式。用:=定义。为了避免上述问题,简单扩展型变量的值在定义处展开,并且只展开一次,因此它不包含任何对其它变量的引用,从而消除变量的嵌套引用。
 3.用?=定义变量,它的含义是如果变量还没定义 ,即如果用户不定义,就提供给他默认的。

 举例说明递归展开与简单方式定义的区别:

CFLAGS:=-Wall
CFLAGS:=$(CFLAGS)
all:
      echo $(CFLAGS)
 对于以上Makefile,执行make后echo输出-Wall
 CFLAGS=-Wall
 CFLAGS=$(CFLAGS)
 all:
      echo $(CFLAGS)

  执行make后echo输出:Makefile:2:***Recursive variable `CFLAGS

GNU make 的主要预定义变量:
预定义变量                      含义
$*              不包含扩展名的目标文件名称。
$+              所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<              第一个依赖文件的名称。
$?              所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@              目标的完整名称。
$^              所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%              如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
                为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR              归档维护程序的名称,默认值为 ar。
ARFLAGS         归档维护程序的选项。
AS              汇编程序的名称,默认值为 as。
ASFLAGS         汇编程序的选项。
CC              C 编译器的名称,默认值为 cc。
CCFLAGS         C 编译器的选项。
CPP             C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS        C 预编译的选项。
CXX             C++ 编译器的名称,默认值为 g++。
CXXFLAGS        C++ 编译器的选项。
FC              FORTRAN 编译器的名称,默认值为 f77。
FFLAGS          FORTRAN 编译器的选项。

参考:http://www.aka.org.cn/Lectures/001/Lecture-1/make.html 

            http://hi.chinaunix.net/?uid-14782631-action-viewspace-itemid-10165


http://www.sudu.cn/info/html/edu/20080407/264139.html

http://blog.csdn.net/lijierson8/article/details/6283040

http://www.worldhello.net/doc/makefile_howto/makefile_howto.mm.htm


经典的shell教程:《Linux Shell Scripting with Bash》—Ken O.Brutch的翻译

使用Bash编写Linux Shell脚本-6.表达式

http://blog.csdn.net/fox_lht/article/details/5894940


陈皓专栏:

http://blog.csdn.net/haoel

http://coolshell.cn/

经典的makefile教程:跟我一起写makefile

http://blog.csdn.net/haoel/article/details/2886http://www.chinaunix.net/jh/23/408225.html

+

http://wenku.baidu.com/view/4a171e6a25c52cc58bd6be6b.html

GCC常用编译选项:优化选项的功能

http://blog.csdn.net/iterzebra/article/details/6203067

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值