Linux_Makefile模板
实用的简单模板工程文件
1.1 工程文件
1.2 iniparser中的文件
在include文件夹中的文件 dictionary.h iniparser.h
在lib文件夹中的文件 libiniparser.a1.3 在filecfg文件夹中的文件
Makefile简单模板
# 指令编译器和选项
CC=gcc
PUB_PATH :=$(PWD)
# 添加静态库
LIBS := $(PUB_PATH)/iniparser/lib/libiniparser.a \# -I$(PUB_PATH)/xxxxx 代表要添加的新增文件夹步骤1 头文件路径
INC_PATH := -I$(PUB_PATH)/iniparser/include \
-I$(PUB_PATH)/filecfg \CFLAGS := -Wall -g -rdynamic -D _GNU_SOURCE $(INC_PATH)# target source
SRCS := $(wildcard *.c)
OBJS := $(SRCS:%.c=%.o)# 以下COMM三步 代表要添加的新增文件夹步骤2 可以添加
COMMON_filecfg:=$(PWD)/filecfg
COMM_SRC := $(wildcard *.c $(COMMON_filecfg)/*.c)
COMM_OBJ := $(COMM_SRC:%.c=%.o)TARGET :=main
all: $(TARGET)$(TARGET):$(COMM_OBJ)
$(CC) $(CFLAGS) -lpthread -lm -ldl -o $@ $^ $(LIBS)clean:
@rm -rf $(TARGET)
@rm -rf $(COMM_OBJ)
解析
3.1 $(PWD):
在Makefile中对应可用PWD := (shellpwd)来获取。那么(shell pwd)来获取。那么(shellpwd)来获取。那么(shell pwd)得到的目录即为执行make -f命令的当前目录。3.2 $(wildcard *.c)
来获取工作目录下的所有的.c文件列表。3.3 变量的定义
= 延迟赋值 ,将整个makefile中的所有变量的值都计算完之后,确定该变量的值。
:= 立即赋值,:=只能使用前面定义好的变量。
+= 追加赋值
?= 条件赋值3.4 自动变量
$@ 所有目标的集合
$^ 所有依赖目标的集合, 会去除重复的依赖目标
$+ 所有依赖目标的集合, 不会去除重复的依赖目标
$? 比目标新的依赖目标的集合3.5 变量替换和变量引用(比如)
#变量替换
SRCS := programA.c programB.c programC.c
OBJS := $(SRCS:%.c=%.o)
#变量引用
$(SRCS)
echo $(SRCS)3.6 C相关命令和参数定义
模板路径: \192.168.1.141\share\CBasic\hi3516a_noreplay_yanzheng\iniparser
Linux_Makefile模板相关推荐
- VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
1. 下载和官网教程 下载地址:https://code.visualstudio.com/ 官方教程:https://code.visualstudio.com/docs 2. 安装插件 安装扩展插 ...
- SpringBoot (三) :SpringBoot使用Freemarker模板引擎渲染web视图
什么是Freemarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而 ...
- SpringBoot-web开发(三): 模板引擎Thymeleaf
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) 目录 1. 引入 ...
- 二分查找模板全面总结
二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...
- Django 模板HTML转义和CSRF4.3
Django对字符串进行自动HTML转义,如在模板中输出如下值: 视图代码: def index(request):return render(request, 'temtest/index2.htm ...
- Django 模板继承4.2
模板继承 模板继承可以减少页面内容的重复定义,实现页面内容的重用 典型应用:网站的头部.尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义 block标签:在父模板中预留区域,在子模板中填 ...
- Django 模板4.1
模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视 ...
- Django 视图和模板1.4
视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 #coding:utf-8 fr ...
- [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解
模板布局 公共部分通常定义为模板布局:如页眉,页脚,公共导航栏.菜单等. 模板布局定义方法 布局页中用 th:fragment 定义模板片段,其他页面用 th:insert 引用片段 例如:foote ...
最新文章
- Learn OpenGL (十二):投光物
- 神经网络的反向传播(BP)是什么?sigmoid函数的导数是什么,有什么形式优势、优缺点?
- 千万级并发下的 推送系统建设策略解析(一)
- 查看hive中某个表中的数据、表结构及所在路径
- 小白带你入坑xamarin系列之环境搭建和准备
- POJ 3670 Eating Together
- python中常用的模块_Python中常用的模块
- UltraCompare v2022文本比较
- 示波器电流探头可分为无源和有源两类,它们的区别是什么?
- 全国大学生数学建模竞赛——2017A题(学习笔记)
- CDN(内容分发网络)
- python皮卡丘字符打印代码,python画皮卡丘的代码
- 计算机专业实践体会,计算机专业毕业实习心得体会
- lvs集群实现lvs-dr模型和lvs-nat模型
- 数据同步工具Sqoop
- 账号和权限管理(一)
- matlab函数im2bw_答复同学Matlab roipoly函数的用法
- win10计算机跑分,Win11对比Win10系统性能测试,看完跑分结果还等发布会吗?
- 全文检索技术Lucene入门和学习、与数据库数据结合的demo实现
- Web死链扫描神器之LinkChecker