当前位置: 技术问答>linux和unix
简单的Makefile语句????????
来源: 互联网 发布时间:2016-07-24
本文导语: 我在Makefile的文档中看到的ifeq语句 都是这样的形式:ifeq ($(CC),gcc),就是括号中只存在两个变量,可是今天我遇到了这样的写法: ifeq (x$(CONFIG), x) CONFIG = $(BASE)/config endif ...
我在Makefile的文档中看到的ifeq语句 都是这样的形式:ifeq ($(CC),gcc),就是括号中只存在两个变量,可是今天我遇到了这样的写法: ifeq (x$(CONFIG), x)
CONFIG = $(BASE)/config
endif 这是怎么回事呢?怎么取变量CONFIG之前还有一个x呢?怎么理解啊?
还有这样的语句是什么意思啊:GCCFLAGS=$(patsubst %,-D%,$(MACROS))这里面的符号都什么意思啊,请大虾给解释一下啊,谢谢了啊!
CONFIG = $(BASE)/config
endif 这是怎么回事呢?怎么取变量CONFIG之前还有一个x呢?怎么理解啊?
还有这样的语句是什么意思啊:GCCFLAGS=$(patsubst %,-D%,$(MACROS))这里面的符号都什么意思啊,请大虾给解释一下啊,谢谢了啊!
|
CONFIG=abcd
x$(CONFIG) 也就是xabcd,只是一般串的连接
ifeq (x$(CONFIG), x) 这时是判断CONFIG变量的值是否为空
$(patsubst str1,str2,TEXT)
将TEXT串中与str1匹配的文字换成str2,其中,str1,str2是一个模式匹配的串
GCCFLAGS=$(patsubst %,-D%,$(MACROS)) 的意思就是把MACROS中的串加上-D的前缀
例如你定义了如下的宏
MACROS=_DEBUG _OS_LINUX
则GCCFLAGS=-D_DEBUG -D_OS_LINUX
于是原来定义的宏就成了gcc支持的参数格式
x$(CONFIG) 也就是xabcd,只是一般串的连接
ifeq (x$(CONFIG), x) 这时是判断CONFIG变量的值是否为空
$(patsubst str1,str2,TEXT)
将TEXT串中与str1匹配的文字换成str2,其中,str1,str2是一个模式匹配的串
GCCFLAGS=$(patsubst %,-D%,$(MACROS)) 的意思就是把MACROS中的串加上-D的前缀
例如你定义了如下的宏
MACROS=_DEBUG _OS_LINUX
则GCCFLAGS=-D_DEBUG -D_OS_LINUX
于是原来定义的宏就成了gcc支持的参数格式
|
CONFIG = $(BASE)/config
我想$(BASE)这个应该是系统环境变量吧,是个路径。
其他的就不知道了。。
我想$(BASE)这个应该是系统环境变量吧,是个路径。
其他的就不知道了。。