Makefile的简洁模版
博客地址:http://www.cnblogs.com/zengjianrong/p/4184854.html
为了方便编译零碎的测试代码,在代码的存放目录编辑了一个Makefile,添加新代码文件后,通过make dep&&make all(如果只是修改代码且修改内容不涉及头文件,则只需make all),可以直接得到最终的执行文件。
流程:1. 遍历当前目录下的“*.c”文件,将其依赖关系保存到depend_file
2. 将depend_file添加到Makefile里面,调用gcc进行编译。
优势:不需要添加代码文件名到Makefile中,相关的库文件,编译选项可以统一修改。
- CC := gcc
- SRC_PATH := $(shell pwd)
- SRCS := $(shell find $(SRC_PATH) -name "*.c")
- DEP := $(patsubst %.c,%,$(SRCS))
- OBJS := $(notdir $(patsubst %.c,%.o,$(SRCS)))
- CFLAGS := -g
- LIBS := -lpthread
- all:$(OBJS)
- $(OBJS):%.o:
- @echo '********************** $< **************'
- $(CC) $(CFLAGS) $(LIBS) $< -o $@
- @echo ''
- .PHONY:clean
- clean:
- rm -rf *.o
- @echo ''
- .PHONY:dep
- dep:
- @cat </dev/null >depend_file
- @echo >>depend_file
- @echo '********************** zjr dependency **************'
- for name in $(DEP);\
- do $(CC) $(CFLAGS) -MM $$name".c" >temp.txt;\
- sed s/`basename $$name".o"`/`basename $$name".o"`/g temp.txt >>depend_file; \
- done;
- @rm -f temp.txt
- @echo ''
- -include depend_file
Makefile的简洁模版的更多相关文章
- GNU Make chapter 2 —— Makefile 介绍
Makefile是由一系列的rule规则组成,这些rule都遵循以下形式: target ... : prerequisites ... command ... ... target(目标) 一般来说 ...
- makefile高级应用
https://www.zybuluo.com/lishuhuakai/note/206938 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...
- 深入学习Make命令和Makefile(下)
https://www.zybuluo.com/lishuhuakai/note/209300 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...
- 利用cmake来搭建开发环境
对于经常在终端下写程序的non-windows程序员,Makefile绝对是最常用的工具,小到一个文件的简单的测试程序,大到数百个文件的商业软件,只需要有shell,一个make命令就可得到可运行的程 ...
- 学习编译并运行C代码
以<UNIX网络编程>中的代码为例,学习如何编译并运行C代码. 根据 UNIX网络编程(第3版)环境搭建——使用MAC OSX10.10,能够成功运行 1.下载本书的头文件及示例源码原书地 ...
- Go-项目结构和代码组织
简介 做大量的输入,通过对比.借鉴,加上自己的经验,产出一个尽可能优的方案. 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都 ...
- 一个适用于层级目录结构的makefile模版
今天写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含 ...
- 30余套系统模版|DIV+CSS网页模板|简洁大气系统模板
30余套系统模版|DIV+CSS网页模板|简洁大气系统模板.都是一些后台系统的模版,很适合开发一些管理系统,办公系统,网站后台系统等.使用很广泛,很实用的系统模版. 下载地址: 点击下载
- 省事之通用Makefile模版
现在编译方案都偏爱使用cmake解决问题,这两条做unity插件,还是用Makefile,居然忘得光光,好记性不如烂笔头. 后面,翻箱倒柜找到以前为炼金术写的Makefiel,发现还真是挺好用,贴出来 ...
随机推荐
- python 处理中文遇到的编码问题总结 以及 字符str的编码如何判断
如何处理中午编码的问题 Python的UnicodeDecodeError: 'utf8' codec can't decode byte 0xxx in position 这个错误是因为你代码中的某 ...
- 第三方web ide开发环境下vuejs开发HMR环境搭建-码农这样开发是快乐的!
vuejs是一个非常优秀的前端框架,利用该框架可以快速开发出任何web app,之所以vuejs开发非常高效快捷,其中最重要的一点就是利用webpakc提供的HMR(热模块替换)特性,可以边写vue组 ...
- DEDECMS安全设置怎样做,您就不会说它不安全了
dedecms是好用,优化也好,就是不安全,个人是这样认为的,今天 闲着没事 整理了一些有助于dedecms网站安全的一些设置,可以说是目前最全的dedecms安全设置! 其一:保持DEDE更新,及时 ...
- window10 蓝牙怎么连接音响或蓝牙耳机
window10 蓝牙怎么连接音响或蓝牙耳机 1.在电脑上依次点击win图标右键-->设置,打开系统设置窗口. 2.点击“设备”,在窗口左侧选择“蓝牙”,右侧检查并开启电脑的蓝牙设备开关, 3. ...
- MySQL之--修改密码
1.在Mac上安装MySQL会随机生成一个临时密码,如下: --24T02::.004376Z [Note] A temporary password is generated for root@lo ...
- maven 学习---Maven构建自动化-Hudson
建立自动化定义场景,依赖项目建设过程中被启动,一旦项目生成成功完成,以确保相关的项目是稳定的. 实例 考虑一个团队正在开发一个项目总线核心API上的其他两个项目的应用程序,网页UI和应用程序的桌面UI ...
- Android 项目主要文件
1.manifests下的AndroidManifest.xml是Andriod程序的清单文件,该文件是整个项目的配置文件,Android四大组件Activity.BroadcastReceiver. ...
- 团队展示&选题 (白衣天使队)
作业详见此地址: https://www.cnblogs.com/bbplus/p/11735449.html
- Innodb整体架构
如下图展示了Innodb内存中和磁盘的结构: 内存中结构主要有如下几种: buffer pool change buffer adaptive hash index (自适应的hash索引) Log ...
- Centos7 安装使用virtualenvwrapper
退出所有的虚拟环境,在物理环境下安装 1.下载安装virtualenvwrapper pip3 install virtualenvwrapper 2.查看python3的文件和virtualenvw ...