免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ljoolj
打印 上一主题 下一主题

[NetBSD] 请教:如何去掉make给的gcc 加上的-O2 选项 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-03-24 15:16 |显示全部楼层
原帖由 ljoolj 于 2006-3-24 14:04 发表
明白了,gcc 里面 -O2 -O0 可以同时存在
最后一个有效是这个意思吧。
那可以直接在Makefile里面改,不用在/etc/mk.conf改,这样改影响面太大了。


刚才看了一下讲awk的书以及我们前段时间翻译的《FreeBSD系统编程》中的make部分,找出了另外一个挺有意思的解决办法:

在你自己的Makefile文件的开头加上这样两句话:

  1. TMP_CFLAGS = $(CFLAGS)
  2. CFLAGS != awk 'BEGIN {"echo $(TMP_CFLAGS)" | getline ; sub("-O2", "") ; print $0}'
复制代码


这样一来,不管之前给CFLAGS赋了什么值,通过这两句话,就能把其中的-O2选项给去掉。同理,只需替换第二行中的"-O2",即可去除或修改之前赋给CFLAGS的任何选项。

这样你也不必去动系统makefile里的东西了。

论坛徽章:
0
2 [报告]
发表于 2006-03-24 15:46 |显示全部楼层
原帖由 congli 于 2006-3-24 15:22 发表
呵~awk还可以这样用.真有趣!


俺也是现学现用,纯属为了练习awk,

论坛徽章:
0
3 [报告]
发表于 2006-03-24 16:33 |显示全部楼层
原帖由 ljoolj 于 2006-3-24 16:14 发表
刚才测试过了,虽然多敲几个字,不过感觉巧妙一些哈:)


跟我们写代码一样,一种“普适”的解决方案看上去一般都要复杂一些,

不过扩展方法也很简单:
sub("被替换选项", "替换后的内容" )

论坛徽章:
0
4 [报告]
发表于 2006-03-24 17:00 |显示全部楼层
原帖由 gvim 于 2006-3-24 16:41 发表
pmake 有这个功能阿。在man make : variable modifiers那里
${CFLAGS:C/-O./-O0/:u}
不过不知道是不是只能pmake这样搞。
我记得gmake有替换函数。


哈哈,不错!把该看的书都看遍了,就是没去man make,结果绕了个大弯子!
俺今天是对pmake刮目相看了!

论坛徽章:
0
5 [报告]
发表于 2006-03-24 17:04 |显示全部楼层
gmake的“替换引用”也可以达到这个目的:

6.3.1 Substitution References
A substitution reference substitutes the value of a variable with alterations that you specify. It has the form `$(var:a=b)' (or `${var:a=b}') and its meaning is to take the value of the variable var, replace every a at the end of a word with b in that value, and substitute the resulting string.

When we say "at the end of a word", we mean that a must appear either followed by whitespace or at the end of the value in order to be replaced; other occurrences of a in the value are unaltered. For example:

  foo := a.o b.o c.o
bar := $(foo:.o=.c)


原来看过这里的,今天没有想起来,
回去再仔细看看pmake的man,免得以后又走弯路了,

[ 本帖最后由 雨丝风片 于 2006-3-24 17:07 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP