Makefile之写demo时的通用Makefile写法
[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小]

前面的一篇文章Makefile之大型工程项目子目录Makefile的一种通用写法介绍了大型项目子目录Makefile的一种通用写法,然而最近在写Linux网络方面的demo,一个目录下有几个文件,如果手工输命令显得太不专业了。于是按该博文的方法改编了一下Makefile,也当学习之用。该Makefile适用于一个C文件生成一个可执行程序的场景,使用该方法当工程目录内的文件有增删时无需对Makefile进行改动,可以说相当的智能。如果对patsubst、wildcard及subst函数不了解的话可参阅上述博文。同时在测试过程中,又发现了一种更简洁的写法,如代码片段2,应该是使用了某些默认规则,由于项目较忙,还未来得及深入研究,先记录下来,等空下来再研究,还望路过大侠多多指点。

1:如果在当前目录中直接make的话使用下列代码:

#General Purpose Makefile by guoqingbo
                         
objects := $(patsubst %.c,%.o,$(wildcard *.c)) 
executables := $(patsubst %.c,%,$(wildcard *.c)) 
                         
all :  $(objects)
$(objects) : %.o: %.c
    gcc -c $< -o $@
    gcc $< -o $(subst .o, ,$@)
clean :
    @rm -rf *.o *~
    @rm -rf ${executables}
 .PHONY : clean

2:后来发现下列代码也可以有相同效果,难道使用了什么默认规则,还不是很明白,先记录下来:

#General Purpose Makefile by guoqingbo 
                           
executables := $(patsubst %.c,%,$(wildcard *.c))
                           
all : $(executables)

clean : 
    @rm -rf *.o *~ 
    @rm -rf ${executables} 
.PHONY : clean

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2013-05/84679.htm

Makefile之写demo时的通用Makefile写法的更多相关文章

  1. mybatis写demo时遇到的问题

    写demo的时候,用mybatis的配置文件链接数据库,始终链接不上,太急人了.仔细查阅,发现在mysql中新增的表没有事务支持.还有就是mysql搜索引擎支持的不对.我换了一下 innodb的引擎, ...

  2. 一个简单的通用Makefile实现

    一个简单的通用Makefile实现   Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...

  3. 【linux】-Makefile简要知识+一个通用Makefile

    目录 Makefile Makefile规则与示例 为什么需要Makefile Makefile样式 先介绍Makefile的两个函数 完善Makefile 通用Makefile的使用 通用的Make ...

  4. 4通用Makefile编写

    a.c #include<stdio.h> #include "a.h" int main() { printf("hello world\n"); ...

  5. 一个通用Makefile的编写

    作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的 ...

  6. C/C++通用Makefile

    最近的项目又回到了Linux上运行,这就需要在Linux下编译项目,写Makefile针对习惯了Windows的程序员来说是一件痛苦的事,如果有一个通用的Makefile该多好啊,本着这样的目的,我再 ...

  7. 通用Makefile

    本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile. 在使用 Makefile 之前,只需对它进行一些简单的设置即可:而且一经设置,即使以后对源程序文件有所增 ...

  8. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(五)——实现注册功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

随机推荐

  1. 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈

    秋实大哥搞算数 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1074 Des ...

  2. linux基础命令学习(五)目录或文件权限

    一.查看文件的详情 ls -al 二.改变目录或文件的权限 chmod [-cfvR] [--help] [--version] mode file 1. 必要参数 -c 当发生改变时,报告处理信息 ...

  3. SQl CASE 语句的嵌套使用方式

    case具有两种格式.简单case函数和case搜索函数.  1.简单case函数 case sex when ’1’ then ’男’ when ’2’ then ’女’else ’其他’ end ...

  4. Ubuntu 16.04安装uafred用于替代Alfred

    说明: Macx下的Alfred非常强大,在Ubuntu下的替代为uafred,为什么选择uafred而不选择其它在于其功能开发简单,模块集成方便,不像别的实现是那种来回封装调用,其实就是一个功能而已 ...

  5. javascript(js)自动刷新页面的实现方法总结

    自动刷新页面的实现方法总结: 1) <meta http-equiv="refresh"content="10;url=跳转的页面"> 10表示间隔 ...

  6. 基于ARM的射频识别读卡器电路设计

    http://tech.yktworld.com/201010/201010032128115666.html 来源:一卡通世界      作者:江小平,李中捷,余晓峰      2010-10-3 ...

  7. 编写第一个Shell脚本

    Linux中有好多中不同的shell,bash是linux默认的shell,免费且容易使用. su切换为root权限 1.创建shell脚本 touch hello.sh 2.编辑: vi hello ...

  8. [Linux] Ubuntu下解压rar文件的方法

    一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤就可以迅速搞定. ubuntu 下r ...

  9. OpenCV中图像融合

         准备2副背景图像,注意图像黑色的部分,是作为mask用的,我们会用灰度图的方式打开它们,这时黑色的部分值为0,则图像融合时候,可以把第二幅图像在黑色的部分显示出来. 代码非常简单,注意就是图 ...

  10. [转]DICOM医学图像处理:Deconstructed PACS之Orthanc

    转载:http://blog.csdn.net/zssureqh/article/details/41424027 背景: 此篇博文介绍一个开源的.基于WEB的DICOM Server软件.该开源软件 ...