日期:2014-05-16  浏览次数:21109 次

如何去掉${CFLAGS}其中一个FLAG ?
如何去掉${CFLAGS}其中一个FLAG ?

上层Makefile中的CFLAGS包含了一个与本Makefile中冲突的一个FLAG,如何去掉其中一个呢?



------解决方案--------------------

override CFLAGS:=$(filter-out my_flag=%,$(CFLAGS))

all:
        @echo $(CFLAGS)



$] CFLAGS="-O2 -Wall my_flag=xxx" make
-O2 -Wall

------解决方案--------------------

上面是一个Makefile。

目的是删除CFLAGS中"my_flag=123456"这个字符串。

下面是make时指定CFLAGS的输出。

删除之前是带有my_flag=xxx的,删除之后就没有这一项了。

根据需要修改filter-out的参数就行了。

filter-out是makefile中的函数,你可以网上搜索一下用法 。
------解决方案--------------------
Makefile

override CFLAGS:=$(filter-out -msoft-float,$(CFLAGS))

all:
        @echo $(CFLAGS)

执行结果

$] CFLAGS="-O2 -Wall my_flag=xxx -msoft-float" make
-O2 -Wall my_flag=xxx