如何发现makefile,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联建站服务项目包括怀安网站建设、怀安网站制作、怀安网页制作以及怀安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,怀安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到怀安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!默认的情况下,make命令会在当前目录下按顺序找寻文件名为"GNUmakefile"、"makefile"、"Makefile"的文件,找到了解释这个文件。
在这三个文件名中,最好使用"Makefile"这个文件名,因为,这个文件名第一个字符为大写,这样有一种显目的感觉。最好不要用"GNUmakefile",这个文件是GNU的make识别的。
target : dependents_1 dependents_2 ... dependents_n
command_1
command_2
command_3
(1)makefile中的变量赋值方式
makefile中定义的变量, 赋值中还有其他引用变量,makefile会将变量逐级展开
赋值操作符前后可以有若干空格
1> 操作符 =
递归展开引用变量, 直到找到被引用的变量的 最新值(搜索makefile)
var = I love
variable = linux
var += $(variable)
variable = magic
all:
@echo $(var)
输出:
I love magic
2> 操作符 :=
递归展开引用变量, 只找到该变量赋值 之前 , 最新的引用变量的值 (不搜索整个makefile)
m := mm
x := $(m)
y := $(x) bar
x := later
all:
@echo $(x) $(y)
输出:
$x ---> later
$y ---> mm bar
(若将 y:= 改成 y= ,$y值为:later bar)
3>操作符 +=
可以通过+=为已定义的变量添加新的值
当变量从前没有被定义过, +=和=是一样的,它定义一个递归展开的变量,但是,当变量已经有定义的时候,+=只是简单的进行字符的添加工作。
如果起初你用:=定义变量,那么+=只是利用变量的当前值进行添加
如果起初用=定义变量,+=的行为就变得有些古怪,它并不会在使用+=的地方马上进行变量展开,而是会把展开工作推后,直到它找到最后变量的定义,这和=定义变量的行为是类似的
4>操作符 ?= (不奏效)
赋默认值,如果没有初始化该变量,就给它赋上默认值。如:
ARCH=arm
ARCH ?= i386
all:
@echo $(ARCH)
输出:
arm
ARCH=
ARCH ?= i386
all:
@echo $(ARCH)
输出:
i386
(2)makefile主要预定变量
$*不包括扩展名的目标文件名称
所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
%HTML_CONTENT%lt;第一个依赖文件的名称
$?所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚
$@目标的完整名称
$^所有的依赖文件,以空格分开,不包含重复的依赖文件
$%如果目标是归档成员,则该变量表示目标的归档成员名称
(3)makefile中内定函数使用
1> wildcard
2> patsubst
3> notdir
SUB_DIR=./ locate order_maker scheduler transmit
INCLUDE = $(foreach temp,$(SUB_DIR), -I./$(temp))
SRC = $(foreach temp,$(SUB_DIR), $(wildcard $(temp)/*.cpp))
OBJS = $(foreach temp,$(SRC), $(patsubst %.cpp,%.o,$(temp)))
OBJS_LINK = $(foreach temp,$(OBJS), obj/$(patsubst %.cpp,%.o,$(notdir $(temp))))
(4)makefile中的文件搜索路径
在makefile中,可以通过给 VPATH 赋值来设置规则中目标文件和依赖文件的搜索目录。
Make首先搜索当前目录,如果未找到依赖的文件,make将按照VPATH中给的目录依次搜索VPATH对makefile中所有文件都有效。
如:
VPATH:=/c/ming \
/c/ming/head
也可以使用指令 vpath ,与VPATH在使用上的区别是:vpath可以给不同类文件指定不同的搜索目录。
如:
vpath %.c /c/ming
vpath %.h /c/ming/head
vpath %.c 表示清除所有vpath对%.c设置的搜索目录
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款