当前位置: 首页 > wzjs >正文

网站建设发票名目郑州百度推广哪家好

网站建设发票名目,郑州百度推广哪家好,做风水网站赚钱吗,网上购物商城开发author: hjjdebug date: 2025年 02月 18日 星期二 18:00:52 CST description: Makefile 阅读笔记 文章目录 1. vpath 指令2. 变量替换3. 变量模式替换4. define 指令4.1 定义一个多行字符串. resume4.2 定义一个函数 greet4.3:实战 5. 介绍几个内置函数.1. wildcard2. foreach3…

author: hjjdebug
date: 2025年 02月 18日 星期二 18:00:52 CST
description: Makefile 阅读笔记


文章目录

    • 1. vpath 指令
    • 2. 变量替换
    • 3. 变量模式替换
    • 4. define 指令
      • 4.1 定义一个多行字符串. resume
      • 4.2 定义一个函数 greet
      • 4.3:实战
    • 5. 介绍几个内置函数.
      • 1. wildcard
      • 2. foreach
      • 3. eval
      • 4. call

看makefile 倍难阅读, 写几个难点帮助理解.

1. vpath 指令

指定某一类文件的搜索路径.
格式: vpath PATTERN DIRECTORY
例:
vpath %.c $(SRC_PATH)
vpath %.cpp $(SRC_PATH)
vpath %.h $(SRC_PATH)
vpath %.inc $(SRC_PATH)
vpath %.S $(SRC_PATH)
vpath %.asm $(SRC_PATH)


2. 变量替换


$(CHECKASMOBJS:.o=.d)

CHECKASMOBJS:是一个Makefile变量,它包含了一系列的文件名或者路径。
.o 是后缀为.o的文件
‘=’ 赋值操作符,用于将匹配到的字符串按照右边的后缀进行替换。
.d 后缀为.d的文件
它会将变量CHECKASMOBJS中的每个.o文件扩展名替换为.d。
举例,如果CHECKASMOBJS的值为
foo.o bar.o
那么$(CHECKASMOBJS:.o=.d)的结果将是
foo.d bar.d

.d文件通常是依赖文件,包含了编译过程中生成的对象文件(.o文件)所依赖的头文件信息。
Makefile通过包含这些.d文件,可以自动获取到编译依赖关系,
从而在编译时能够正确地处理头文件的变更,避免重复编译不必要的源文件。


3. 变量模式替换


$(CHECKASMOBJS:%=tests/checkasm/%)

这是一种使用Make的模式替换功能(Pattern Substitution)的表达式
CHECKASMOBJS:这是一个Make变量,它包含了一系列的文件名或者路径。
%=tests/checkasm/%:这是一个模式替换规则。
‘%’ 是模式,它代表匹配任意字符串的通配符。
‘=’ 赋值操作符,用于将匹配到的字符串按照右边的模式进行替换。
tests/checkasm/%:这是替换后的模式,其中%会被CHECKASMOBJS中每个元素匹配到的字符串所替换。

举例: 如果CHECKASMOBJS的值为
foo.o bar.o
那么$(CHECKASMOBJS:%=tests/checkasm/%)的结果将会是
tests/checkasm/foo.o tests/checkasm/bar.o

这种模式替换功能在Makefile中非常有用,特别是当你需要对一系列文件名或路径进行批量修改时。
它可以让你以非常简洁的方式实现复杂的字符串替换操作。

练习:
TESTTOOLS = audiogen videogen base64 audiomatch
HOSTPROGS := $(TESTTOOLS:%=tests/%)
答案,就是把文件都添加了一个路径


4. define 指令


define 指令用来定义多行变量或函数

4.1 定义一个多行字符串. resume

但你只能在一行中写,换行用\n隔开
因为后续的行,首个token都会认为是命令

define resume
"my name is hjj.\nI like computer.\nI graduated in xxxx."
endef
all:@echo $(resume)

执行
$ make
my name is hjj.
I like computer.
I graduated in xxxx.

4.2 定义一个函数 greet

define 被展开每行按命令执行,后续是命令参数

define greet
hello $1!
@echo hello define
@echo hello function
endef
all:$(call greet, hjj)

注意call 调用,函数名与参数,参数与参数用,分割而不是空格分割,向c靠拢而不向bash靠拢

4.3:实战

define RESET
$(1) :=
$(1)-yes :=
endef

RESET 函数是把传来的参数复位的意思

define DOSUBDIR
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
include $(SRC_PATH)/$(1)/Makefile
endef

其中SUBDIR_VARS如下, 还可以定义更多变量

SUBDIR_VARS=CLEANFILES TOOLS MMX-OBJS X86ASM-OBJS

DOSUBDIR 函数是对定义的变量进行枚举,对定义的变量进行复位,初始化为空
然后包含上第一参数作为目录下的Makefile, 还可以继续追加其它动作

FFLIBS=avformat avcodec avutil
$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))

该调用会对指定目录进行DOSUBDIR操作,其返回字符串继续用作命令执行


5. 介绍几个内置函数.


1. wildcard

格式:

‘$(wildcard PATTERN)’

功能: 输出匹配 PATTERN 的文件名
举例:$(wildcard *.c)
输出目录向所有.c 文件, 类似ls *.c输出

2. foreach

函数调用格式:

$(foreach VAR,LIST,TEXT)

功能: 跟据列表LIST, 用枚举变量VAR, 来执行TEXT动作
举例:
展开指定目录下的所有文件
find_files = $(wildcard $(dir)/*) # 扩展为该目录下所有文件
dirs := a b c d
files := ( f o r e a c h d i r , (foreach dir, (foreachdir,(dirs),$(find_files)) # 指定目录下的所有文件

替换文件扩展名
FILES := file1.c file2.c file3.c
OBJS := $(foreach file, $(FILES), $(file:.c=.o))

复制库文件
LIBS := lib1 lib2 lib3
install: $(foreach lib, $(LIBS), cp ( l i b ) . s o / u s r / l o c a l / l i b / (lib).so /usr/local/lib/ (lib).so/usr/local/lib/(lib).so)

3. eval

eval指令可以将参数中的字符串作为Makefile的一部分进行解析和执行
$(eval )
把string 当命令来执行, 可以实现动态为变量赋值,为函数赋值,执行命令等

4. call

$(call VARIABLE,PARAM,PARAM,…)

 调用用户定义的函数VARIABLE并传递参数
http://www.dtcms.com/wzjs/477726.html

相关文章:

  • 百度网站首页收录千度搜索引擎
  • 网站的中英文切换怎么做的软文推广渠道
  • 房地产公司如何网站建设做网站的步骤
  • web优秀网站h5案例分享余姚seo智能优化
  • 只做美食类目产品的网站网站推广的基本方法有哪些
  • 网站访问量统计代码怎么做市场调研报告怎么写的
  • 网站建设与制作教案郑州百度快照优化排名
  • 能够做代理的网站有哪些网络营销策划书
  • 典型网站建设搜索引擎优化的含义和目标
  • 设计公司展厅装修郑州网站推广优化
  • 网站开发厂商电视剧百度搜索风云榜
  • 如何用java做网站爱站网官网
  • 福州市鼓楼区建设局网站淘宝店铺怎么运营
  • 有关做详情页的参考网站网上推广产品怎么做
  • 建筑网站首页大图专业北京seo公司
  • 订单拆单在电商网站建设台州专业关键词优化
  • 生产企业网站欣赏软件开发流程八个步骤
  • 新手如何建设网站seo托管服务
  • 游戏网站建设需要多少钱友情链接交换形式
  • 现在1做啥网站流量大杭州推广公司排名
  • 网站建设分为什么seo研究中心好客站
  • 做美团网站多少钱百度seo点击排名优化
  • 找到网站永久域名英文外链seo兼职
  • 网站建设公司如何找客户百度seo关键词排名s
  • 接网站开发哪里好网站优化 福州
  • 谷歌外贸建站多少钱怎样淘宝seo排名优化
  • 海口网站建设搜q479185700台州网站制作维护
  • 做网站要主机还是服务器北京seo加盟
  • 做网站怎么调用数据库百度网盘客服中心电话
  • 建设银行手机版官方网站下载阿里指数app下载