一个通用的Makefile框架】的更多相关文章

先做一个简单的记录,后续有时间再慢慢完善补充细节. 先上一个整体图片: 其中,最重要的文件就是:program_template.mk. 下面是program_template.mk最重要的内容: $(1)_COBJS = $$(patsubst $$($(1)_SDIR)%.c,$$($(1)_BIN)/%.o,$$($(1)_CSRCS)) $(1)_OBJS = $$($(1)_COBJS) $(1)_COBJDEPS = $$(patsubst $$($(1)_SDIR)%.c, $$(…
1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe 1.2体验在VC下程序的编译 a.先编译,在链接 b.修改了哪个文件,就单独编译此文件,在链接 c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接 1.3在linux下实现上述要求 2.编写一个测试的Makefile 2.1直接编译链接 gcc -o test a.c b.c 缺点:改变其中一个文…
GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性. 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相应的更新.如果通过手动去完成这个工作的话,对于小型的项目可能还行,但是对于比较大型的项目就几乎是不可能的. 因此Linux 系统提供了一个自动维护和生成目标程序的工具 make,它可以根据各个模块的更改情况去重新编译连接目标代码 Make 工具的作用就是实现编译连接过程的自动化.它定义了一种语言,用…
据http://bbs.chinaunix.net/thread-2300778-1-1.html的讨论,发现还是有很多人在问通用Makefile的问题,这里做一个总结.也作为以后的参考.       笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应用程序则所有的Makefile都要重写一遍,虽然可以部分的粘帖复制,但还是感觉应该找到更好的解决途径:另外当一个应用程序中包含多个文件夹时通常要在每个目录下创建一个Makefile,当有数十个文件夹时,要创建如此多的…
通常要把我们自己的的代码编译成在android里面编译的可执行文件,我们通常是建一个文件夹 . ├── Android.mk ├── Application.mk ├── convolve.cl ├── convolve_cl.cpp ├── convolve_cl.cpp~ ├── inter_ocl │   └── opencl │   ├── CL │   │   ├── cl_ext.h │   │   ├── cl.h │   │   ├── cl_platform.h │   │  …
1.各级子目录的Makefile: obj-y += file.o obj-y += subdir/ “obj-y += file.o” 表示把当前目录下的file.c编进程序里. “obj-y += subdir/”表示进入subdir这个子目录下去寻找文件来编进子程序中: 2.顶层目录的Makefile: CROSS_COMPILE =                        #如果要交叉编译的话,就是:CROSS_COMPILE = arm-linux- AS           =…
最近在编写Android编译系统时,需要遍历每一个目录下每一个文件夹下的makefile,网上的方法有些繁琐 :就直接贴上自己遍历子目录深度为1:(for  temporary)(之后会继续更新) 下面是我的一个简单实例工程: 文件夹目录层次: 1.根目录(相对于项目而言)的makefile #获取当前目录下的子目录名字 subdir = $(shell ls -l | grep ^d | awk '{print $$9}') .PHONY : all clean ${subdir} NULL…
编译test_Makefile的方法:a. gcc -o test a.c b.c对于a.c: 预处理.编译(C文件转换成汇编).汇编(汇编转换成机器码)对于b.c:预处理.编译.汇编最后链接优点:命令简单缺点:如果文件很多,即使你只修改了一个文件,但是所有的文件文件都要重新"预处理.编译.汇编" 效率低 b. 写Makefile核心:规则 目标:依赖1 依赖2(目标指根据依赖生成文件名字) 命令 a.o : a.c gcc -c -o a.o a.c %.o:%.c    //这里的…
# ESDK the makefile setting file - chenwg@20131014 # you can modify "PC = 1" such as "MIPS = 1" "ARM = 1" TOPDIR := . BINDIR := $(TOPDIR)/bin INCDIR := $(TOPDIR)/inc EXCLUDEDIRS := tools SRCS := $(shell find $(TOPDIR) -name &…
话不多说,请看: 我的项目有的目录结构有: dirls/ ├── include │   └── apue.h ├── lib │   ├── error.c │   ├── error.o │   └── Makefile ├── src │   ├── dirls.c │   ├── dirls.out │   └── Makefile └── test_client 而我的Makefile模板代码如下: SRCS = $(wildcard *.c ../lib/*.c) #wildcard…
目录 Makefile Makefile规则与示例 为什么需要Makefile Makefile样式 先介绍Makefile的两个函数 完善Makefile 通用Makefile的使用 通用的Makefile解释 零星知识点 make命令的使用 即时变量与临时变量 变量的导出(export) Makefile中的shell Makefile中放置第一个命令 假想目标 小知识 常用函数 *通用Makefile设计思想 一个通用Makefile 本程序的Makefile分为3类: 源码(注释版) M…
Easymake 使用说明 介绍 Easymake 是一个在linux系统中 C/C++ 开发的通用 makefile.在一个简单的 C/C++ 程序中使用 easymake,你甚至可以不写一行 makefile 代码来生成目标文件. Easymake 包含以下功能: 自动扫描 C/C++ 源文件. 自动生成和维护依赖关系,加快编译时间. 支持简单的单元测试,可以很方便地管理多个程序入口(main 函数). 完美地支持 VPATH 变量. 我将在后面的例子中一步步地向你展示如何使用 easyma…
上一篇一步一步写一个简单通用的makefile(二) 里面的makefile 实现对通用的代码进行编译,这一章我将会对上一次的makefile 进行进一步的优化. 优化后的makefile: #Hellomake #Magnum, 2014-10-20 # 指令编译器和选项 CC=gcc CFLAGS=-Wall # 需要链接库的库名,比如libm.a,就是-lm,需要去掉前面的lib和后面的.a LIBS=-lm # 设置默认搜索头文件的路径,优先是这个,然后是系统路径 IncludeDir…
rabbitmq作为消息队列可以有消息消费确认机制,之前写个基于redis的通用生产者 消费者 并发框架,redis的list结构可以简单充当消息队列,但不具备消费确认机制,随意关停程序,会丢失一部分正在程序中处理但还没执行完的消息.基于redis的与基于rabbitmq相比对消息消费速度和消息数量没有天然的支持. 使用rabbitmq的最常用库pika 不管是写代码还是运行起来都比celery使用更简单,基本能够满足绝大多数场景使用,用来取代celery  worker模式(celery有三个…
作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只需要执行一个make就OK了,这样大大提高了开发效率.但是Makefile的语法规则众多,而且缺乏参考资料,对于初学者来说,写起来还是有一定的难度,往往令很多人望而生畏.下面我们介绍一个比较通用而且简洁的Makefile,大家只要对它稍…
新建工程文件夹,在里面新建 bsp.imx6ul.obj 和project 这 3 个文件夹,完成以后如图所示: 新建的工程根目录文件夹 其中 bsp 用来存放驱动文件:imx6ul 用来存放跟芯片有关的文件,比如 NXP 官方的 SDK库文件:obj 用来存放编译生成的.o 文件:project 存放 start.S 和 main.c 文件,也就是应用文件:将十二章实验中的 cc.h.fsl_common.h.fsl_iomuxc.h 和 MCIMX6Y2.h 这四个文件拷贝到文件夹 imx6…
目的 进行如项目的顶层目录后,运行make,即可直接编译项目中所有的源文件,并生成最终的可执行文件 实现头文件自动依赖 添加源文件不用修改Makefile,且可以自动编译新文件 顶层目录下添加文件夹,不用重新编写Makefile,直接拷贝其他文件夹下的Makefile,就可以自动编译整个文件夹下的源文件 目录结构 顶层文件夹名称test,二级文件夹按照模块分类,文件夹名称就是模块名称,顶层文件夹下包含一个顶层的Makefile,二级文件夹下包含二级Makefile.二级文件夹target存放的是…
目录 前言 1. 特点 2. 分析 2.1 简要原理 2.2 具体分析 3. 源码 前言 该 Makefile 已经通过基于内核 Linux5.4 版本验证通过. 因为编写这通用驱动 Makefile 时遇到了头文件指定路径失败的问题.使用过 ccflags-y .INCDIR .EXTRA_CFLAGS .-L 等等参数都无效.就是因为我使用了 $(shell pwd).导致这些参数的路径都为内核源码路径下,而非模块路径.后面重新查看内核文档,看内核的推荐写法才解决了,使用 $(src) 来获…
本文主要描述一个通用的权限系统实现思路与过程.也是对此次制作权限管理模块的总结. 制作此系统的初衷是为了让这个权限系统得以“通用”.就是生产一个web系统通过调用这个权限系统(生成的dll文件), 就可以实现权限管理.这个权限系统会管理已生产系统的所有用户,菜单,操作项,角色分配,权限分配,日志等内容. 实现此功能从正常访问和非法访问两个方面入手.正常访问即用户登录系统后只能看到或操作自己拥有的菜单:非法访问即 通过拼写url等途径访问系统的某个功能:所以程序除了实现用户登录后获取用户拥有的菜单…
openwrt: Makefile 框架分析 原文链接:blog.chinaunix.net/uid-26675482-id-4704952.html 本篇的主要目的是想通过分析Makefile,了解openwrt编译过程.着重关注以下几点: openwrt目录结构 主Makefile的解析过程,各子目录的目标生成. kernel编译过程 firmware的生成过程 软件包的编译过程 openwrt目录结构 官方源下载速度太度,我从github上clone了openwrt的代码仓库. git c…
Android发展的一个重要方面Makefile分析 随着移动互联网的发展,移动开发也越来越吃香了.眼下最火的莫过于android.android是什么就不用说了,android自从开源以来,就受到非常多人的追捧.当然.一部人追捧它是由于它是Google开发的.对一个程序 员来说,一个系统值不值得追捧得要拿代码来说话.我这里并不打算分析android的代码.而是android的makefile.或许大家已经知道了在android源代码里,我们能够看见非常多makefile文件,起初我也不明确.经…
本文,是接着上文[js高手之路]匀速运动与实例实战(侧边栏,淡入淡出)继续的,在这篇文章的最后,我们做了2个小实例:侧边栏与改变透明度的淡入淡出效果,本文我们把上文的animate函数,继续改造,让变得更加的通用和强大: 1,支持多个物体的运动 2,同时运动 3,顺序运动 这三种运动方式也是jquery中animate函数支持的 一.animate函数中怎么区分变化不同的样式? 上文中,侧边栏效果 用的animate函数 改变的是left值 function animate(obj, targe…
最近一两年用C++写了好几个基于TCP通信类型程序,都是写一个小型的服务器,监听请求,解析自定义的协议,处理请求,返回结果.每次写新程序时都把老代码拿来,修改一下协议解析部分和业务处理部分,然后就一个新的程序就诞生了.如此这般做了几回,就萌生了一个想法:是不是可以做一个通用的服务器程序,每次只要实现很少的代码就可以构建的一个新的服务器程序? 巧的是在用C++写代码的时候,我刚好碰到过一个叫做Push Framework的开源项目(在这里可以找到:www.pushframework.com),就是…
在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放一种特定的model,就好像我这个view是专门为了展示这个model所设计的?有没有一种设计方法,使得我所设计的一些view也可以放任何合适种类的model,并且按照预期的那样正确展示呢? (前一篇记录了个人理解的OC开发中代码规范以及代码通用性,这一篇主要是设计一个通用的进度条.) 为了解决这个…
Butter Knife:一个安卓视图注入框架 2014年5月8日 星期四 14:52 官网: http://jakewharton.github.io/butterknife/ GitHub地址: https://github.com/JakeWharton/butterknife JavaDocs地址: http://jakewharton.github.io/butterknife/javadoc/ 注:本随笔翻译自官网,做了一些整理和注释.来自我的OneNote笔记 大纲: @Injec…
目的:编写一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译.并且当某个.c/.cpp..h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译. 二要达到这个目的,用到的技术有:1-使用wildcard函数来获得当前目录下所有.c/.cpp文件的列表.2-make的多目标规则.3-make的模式规则.4-用gcc -MM命令得到一个.c/.cpp文件include了哪些文件.5-用sed命令对gcc -MM命令的结果作修改.6-用include命…
一.说明 首先我不知道定义的文章标题是不是准确,我这篇博文介绍的是一个通用的软件主菜单框架,界面布局用的是extjs,还是先上一个图吧. 软件主界面左侧菜单采用的风格是extjs的手风琴模式,需要注意的是,界面上“修改密码”和“退出”功能没有实现. 2.系统应用步骤 (1).在数据表moduleList中修改菜单信息,moduleList数据表的结构.数据将在后面展示 (2).在菜单对应的界面上,添加UI设计,添加新功能的后台代码即可 在源代码中,在项目目录中的文件夹“ItemPanel”中查找…
前几天要做一个数据导出Excel 我就打算写一个通用的. 这样一来用的时候也方便,数据主要是通过Orm取的List.这样写一个通用的刚好. public static void ListToExcel(List<dynamic> ts, string[] RowName, string[] ListCorrespondRow, bool IsRowName = false) { //创建工作簿对象 IWorkbook workbook = new HSSFWorkbook(); //创建工作表…
1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC框架.花了一些时间看了下他的代码,写的干净简单,写的RPC框架可以算是一个简易版的dubbo.这个RPC框架虽小,但是麻雀虽小,五脏俱全,有兴趣的可以学习一下. 本人在这个简易版的RPC上添加了如下特性: * 服务异步调用的支持,回调函数callback的支持 * 客户端使用长连接(在多次调用共享连接) *…
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI(Web Server Gateway Interface)定义了Web服务器与Web应用(或Web框架)之间的标准接口.在WSGI的规范下,各种各样的Web服务器和Web框架都可以很好的交互. 由于WSGI的存在,用Python写一个简单的Web框架也变得非常容易.然而,同很多其他的强大软件一样,要…