makefile中=,+=,:=,?=的使用
来源:互联网 发布:ktm duke1290数据 编辑:程序博客网 时间:2024/06/02 07:16
在makefile中经常使用4种赋值符号,作用又都不相同,这里记录一下分别的作用。
使用一个例子先看一下:
ifdef DEFINE_VERVER = "hello world!"elseendififeq ($(OPT),define)VER ?= "hello world!firsr!"endififeq ($(OPT),add)VER += "kelly!"endififeq ($(OPT),recover)VER := "helloworld again!!!!"endifall:@echo $(VER)
在命令行下分别执行
[(8) root@Fedora~/test_makefile]#make DEFINE_VER=true OPT=definehello world![(9) root@Fedora~/test_makefile]#make DEFINE_VER=true OPT=addhello world! kelly![(10) root@Fedora~/test_makefile]#make DEFINE_VER=true OPT=recoverhelloworld again!!!![(11) root@Fedora~/test_makefile]#make DEFINE_VER= OPT=definehello world!firsr![(12) root@Fedora~/test_makefile]#make DEFINE_VER= OPT=addkelly![(13) root@Fedora~/test_makefile]#make DEFINE_VER= OPT=recoverhelloworld again!!!!
从上面的结果中就可以看到他们的区别:
= 是最基本的赋值
:= 是覆盖之前的赋值
?= 是如果没有被赋值就赋予等号后面的值
+= 是添加等号后面的值
1、“=”
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:
x = foo y = $(x) bar x = xyz 在上例中,y的值将会是 xyz bar ,而不是 foo bar 。2、“:=”
“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。
x := foo y := $(x) bar x := xyz 在上例中,y的值将会是 foo bar ,而不是 xyz bar 了
阅读全文
0 0
- makefile中=,+=,:=,?=的使用
- [makefile]makefile中 '=', ':=', '?=', '+='的区别
- Makefile 中 = := ?= 的区别
- Makefile 中 = := ?= 的区别
- Makefile中”=“”?=“”+=“的区别
- Makefile中=与:=的区别
- Makefile中=与:=的区别
- makefile中“=”和“:=”的区别
- Makefile中=与:=的区别
- makefile中“=”和“:=”的区别
- makefile中“=”与“:=”的区别
- Makefile 中:= 和=的区别
- Makefile中=与:=的区别
- Makefile中=与:=的区别
- makefile 中=与:=的差别
- makefile中“=”和“:=”的区别
- Makefile中=与:=的区别
- makefile 中":"和":="赋值的区别
- SQL Tuning 基础概述08
- Linux文件权限概念
- JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
- 2017年下半年学习任务
- memcached和redis区别
- makefile中=,+=,:=,?=的使用
- 802.11n MCS 简介
- 优秀 web ui 框架
- mongodb删除数据库
- HDU1394 Minimum Inversion Number(线段树单点更新)
- iOS 对字符串进行MD5处理
- Codeforces Round #430 (Div. 2) B. Gleb And Pizza
- 设计模式
- eclipse下搭建shell脚本编辑器--安装开发shell的eclipse插件shelled