首页 > 其他分享 >简单的Makefile文件解析

简单的Makefile文件解析

时间:2024-06-14 09:58:31浏览次数:12  
标签:文件 %. 变量 .. Makefile 相对路径 解析 DIR

Makefile文件解析


#common makefile header

#"$(变量)"、"$makefile内置变量"表示变量值

DIR_INC = ../../include		#头文件相对路径
DIR_BIN = ../../bin			#可执行文件的相对路径
DIR_LIB = ../../libs		#库的相对路径

TARGET	= iat_online_record_sample		#目标变量
BIN_TARGET = $(DIR_BIN)/$(TARGET)		#目标变量相对路径

CROSS_COMPILE = 						#编译器前缀
CFLAGS = -g -Wall -I$(DIR_INC)			#编译选项

#可根据实际需要修改,选择所需平台SDK,默认为x64或x86平台。
ifdef LINUX64
LDFLAGS := -L$(DIR_LIB)/x64
else
LDFLAGS := -L$(DIR_LIB)/x86 
endif

LDFLAGS += -lmsc -lrt -ldl -lpthread -lasound -lstdc++		#连接库默认选项

#$(wildcard PATTERN):列出当前目录下所有符合模式“PATTERN”格式的文件名
#$(patsubst PATTERN:REPLACEMENT,TEXT):搜索“TEXT”中以空格分开的单词,将否符合模式“TATTERN”替换为“RE-PLACEMENT”
#':=':静态赋值,在使用“:=”定义变量时,变量值中对其他量或者函数的引用在定义变量时被展开(对变量进行替换)
OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))	

#目标:依赖文件
#TAB + 执行命令 
#"$^":所有依赖文件
#"$@":目标文件
$(BIN_TARGET) : $(OBJECTS)
	$(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $@ $(LDFLAGS)

#"%.o : %.c":遍历所有.c文件,一个一个转换成.o文件
#"$<":第一个依赖文件
%.o : %.c
	$(CROSS_COMPILE)gcc -c $(CFLAGS) $< -o $@

#'@':规则的命令行以字符“@”开始,则 make 在执行这个命令时就不会回显这个将要被执行的命令。
clean:
	@rm -f *.o $(BIN_TARGET)

.PHONY:clean
#".PHONY:xxx":伪目标标志:伪目标

#common makefile foot

标签:文件,%.,变量,..,Makefile,相对路径,解析,DIR
From: https://www.cnblogs.com/colors-lg/p/18247186

相关文章

  • 关于CSDN解锁VIP文章-下载文件
    众所周知csdn上的东西,互抄的东西很多。而且收费也很答辩!这里推荐一个github上的一个项目,可以解锁vip文章和下载文件源码地址:https://gitcode.com/cuckooplus/csdn_downloadpublicclassCsdnBlogHandleServiceextendsMarkDownService{    @Override  prote......
  • Java性能优化:实用技巧与策略全解析
    引言在软件开发中,性能常常是衡量应用成功的关键因素之一。对于Java应用来说,有效的性能优化不仅可以提高用户满意度,还能降低运营成本。本文将探讨一些高效的Java性能优化技巧,并通过实际代码示例展示如何实施这些策略。垃圾回收优化垃圾收集(GC)是Java性能优化中最关键的部分。......
  • 【Java】 探索Java中遍历文件夹的奥秘:获取文件夹内所有文件名
    >>【痕迹】QQ+微信朋友圈和聊天记录分析工具>>(1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。>>(2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。>>(3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。>>下载地......
  • 【Java】 深入解析Java安全异常:Error - trustAnchors parameter must be non-empty
    >>【痕迹】QQ+微信朋友圈和聊天记录分析工具>>(1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。>>(2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。>>(3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。>>下载地......
  • 高通SA8295P芯片技术规格详解与原理解析
    高通SA8295P芯片技术规格详解与原理解析高通SA8295P(骁龙8295)是一款专为汽车座舱设计的高性能SoC(系统级芯片),采用最新的5nm工艺,具备强大的计算能力、图形处理能力以及丰富的外设支持。以下是该芯片的详细技术规格和工作原理解析。1.处理器核心(CPU)Snapdragon™SA8295PS......
  • 03、DNS 域名解析服务
    3.1BIND域名服务基础        本节首先对DNS系统的作用及类型做一个简单回顾,并学习Linux操作系统中BIND域名服务的基础知识。3.1.1DNS系统的作用及类型        整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务......
  • 使用 Docker 卷来实现替换容器内文件为宿主机上的
    要将容器内的/usr/share/nginx/html目录替换成宿主机上的/path/html目录里的内容,你可以使用Docker卷来实现。以下是你需要做的修改:停止并删除现有的前端容器(如果它正在运行):docker-composedown--remove-orphans修改docker-compose.yml文件,在frontend服务中......
  • linux用户及用户组管理,目录或文件权限管理
            在Linux系统中,用户及用户组管理以及目录或文件权限管理是非常重要的系统管理任务。正确管理用户和用户组可以确保系统安全性和数据完整性,而正确设置文件和目录权限可以控制用户对系统资源的访问权限。1.用户及用户组管理对用户进行管理,首先要了解相关的指令......
  • ABP中使用HangFire和 Magicodes.IE(文件导出)中遇到的生命周期失效的解决
    实现功能:1,通过Magicodes.IE(不错的文件导入及导出组件,使用近5年了),导出10W+的数据;2,前端VUE调用导出大数据接口,报Http499超时,考虑后端用HangFire后台作业来执行具体任务,执行完成,把执行的结果返回给前端;实现动态导出功能的服务代码如下:publicclassOutputService:ITransientD......
  • javascript - 文件上传
    最简单的文件上传接口@ControllerpublicclassExcelCtrl{@ResponseBody@RequestMapping(value="upload",method=RequestMethod.POST)publicResultimportExcel(@RequestParamMultipartFilefile,HttpServletResponseresponse)throwsIOExceptio......