博客地址: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的简洁模版的更多相关文章

  1. GNU Make chapter 2 —— Makefile 介绍

    Makefile是由一系列的rule规则组成,这些rule都遵循以下形式: target ... : prerequisites ... command ... ... target(目标) 一般来说 ...

  2. makefile高级应用

    https://www.zybuluo.com/lishuhuakai/note/206938 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...

  3. 深入学习Make命令和Makefile(下)

    https://www.zybuluo.com/lishuhuakai/note/209300 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...

  4. 利用cmake来搭建开发环境

    对于经常在终端下写程序的non-windows程序员,Makefile绝对是最常用的工具,小到一个文件的简单的测试程序,大到数百个文件的商业软件,只需要有shell,一个make命令就可得到可运行的程 ...

  5. 学习编译并运行C代码

    以<UNIX网络编程>中的代码为例,学习如何编译并运行C代码. 根据 UNIX网络编程(第3版)环境搭建——使用MAC OSX10.10,能够成功运行 1.下载本书的头文件及示例源码原书地 ...

  6. Go-项目结构和代码组织

    简介 做大量的输入,通过对比.借鉴,加上自己的经验,产出一个尽可能优的方案. 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都 ...

  7. 一个适用于层级目录结构的makefile模版

    今天写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含 ...

  8. 30余套系统模版|DIV+CSS网页模板|简洁大气系统模板

    30余套系统模版|DIV+CSS网页模板|简洁大气系统模板.都是一些后台系统的模版,很适合开发一些管理系统,办公系统,网站后台系统等.使用很广泛,很实用的系统模版. 下载地址: 点击下载

  9. 省事之通用Makefile模版

    现在编译方案都偏爱使用cmake解决问题,这两条做unity插件,还是用Makefile,居然忘得光光,好记性不如烂笔头. 后面,翻箱倒柜找到以前为炼金术写的Makefiel,发现还真是挺好用,贴出来 ...

随机推荐

  1. Delphi - 操作Excel数据公式的实现

    procedure TF_SMP_FT_NEW.RzBitBtn_StartToChangeClick(Sender: TObject); var i, j, ni, nj, iRows, iCol, ...

  2. django中视图函数中装饰器

    方法一 给指定方法加 from django.utils.decorators import method_decorator class xx(View): @method_decorator(装饰 ...

  3. 3-Consul 使用手册

    原文:http://www.liangxiansen.cn/2017/04/06/consul/ Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键 ...

  4. tornado 之 RequestHandler(请求)

    RequestHandler from tornado.web import ReuqestHandler 一.利用HTTP协议想服务器传递参数 提取url的特定部分 http://127.0.0.1 ...

  5. Gitlab批量迁移项目

    最近接到一个需求,要把一个Gitlab上边的项目全部导入到另外一个Gitlab,借鉴了网上的一个方法,成功实现. 参考链接:https://segmentfault.com/a/11900000159 ...

  6. 3.2 Spark运行架构

    一.基本概念 1.RDD Resillient Distributed Dataset 弹性分布式数据集 2.DAG 反映RDD之间的依赖关系 3.Executor 进程驻守在机器上面,由进程派生出很 ...

  7. [原创]python爬虫之BeautifulSoup,爬取网页上所有图片标题并存储到本地文件

    from bs4 import BeautifulSoup import requests import re import os r = requests.get("https://re. ...

  8. JS高阶---IIFE&&函数前加;

    IIFE( 立即调用函数表达式)是一个在定义时就会立即执行的 JavaScript 函数. 全称为Immediately Invoked Function Expression 有时如果不加:会出现一 ...

  9. jmeter插件

    https://jmeter-plugins.org/install/Install/ plugins-manager.jar放到 lib/ext中,重启可以发现JMeter Plugins Mana ...

  10. 代码审计-sha()函数比较绕过

    <?php $flag = "flag"; if (isset($_GET['name']) and isset($_GET['password'])) { var_dump ...