hsy75的个人空间 https://blog.eetop.cn/vivilife [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

[b][z] GNU make know - how

已有 1325 次阅读| 2013-2-21 12:23 |个人分类:GNU


1. 如何跟踪make错误

1.1 利用tee

#make | tee make.log

利用tee工具可以很方便的,在监视make的执行过程中,同时也生成make的log


1.2 老方法:
因为编译时候错误太多,必须将错误定义到一个文件才行:
make   >   makeresult   2>&1
表示:把stdout和stderr都重定向到文件makeresult
make  1>>1.txt 2>>2.txt
这里错误都保存在2.txt

2 Makefile= := ?= +=这几个赋值运算符区别?

我们来做个简单的实验
 
新建一个Makefile,内容为:
ifdef DEFINE_VRE
    VRE = “Hello World!”
else
endif
 
ifeq ($(OPT),define)
    VRE ?= “Hello World! First!”
endif
 
ifeq ($(OPT),add)
    VRE += “Kelly!”
endif
 
ifeq ($(OPT),recover)
    VRE := “Hello World! Again!”
endif
 
all:
    @echo $(VRE)
 
敲入以下make命令:
make DEFINE_VRE=true PT=define 输出:Hello World!                  // hsy75案:因为已经定义了,?=就不起作用了
make DEFINE_VRE=true PT=add 输出:Hello World! Kelly!            // + 起作用
make DEFINE_VRE=true PT=recover  输出:Hello World! Again!    // :则重新复制
make DEFINE_VRE=       PT=define 输出:Hello World! First!         // hsy75案:因为之前没有定义,所以?=起作用               
make DEFINE_VRE=       PT=add 输出:Kelly!                                 // 之前没定义,+也起作用
make DEFINE_VRE=       OPT=recover 输出:Hello World! Again!
 
从上面的结果中我们可以清楚的看到他们的区别了
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值,或者如果前面没有定义,那么就相当于新建了


2011-11 creat

2013-2 更新make basic



http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html

 


点赞

发表评论 评论 (1 个评论)

回复 a13201 2011-3-14 08:02
:call: nice~~~~~~~~~~~~~~

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 1

    好友
  • 2

    获赞
  • 14

    评论
  • 3241

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 04:50 , Processed in 0.028228 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部