Linux中makefile项目管理

一、整体大纲

二、makefile的编写

一个规则   两个函数  三个变量

1. 一个规则

三要素: 目标, 依赖, 命令
    目标:依赖
    命令
    1) 第一条规则是用来生成终极目标的规则
            a. 如果规则中的依赖不存在, 向下寻找其他的规则,
            b. 更新机制: 比较的是目标文件和依赖文件的时间

2. 两个函数

1) 查找指定目录下, 指定类型的文件
           src=$(wildcard ~/aa/*.c)
    2)匹配替换函数
            obj=$(patsubst %.c, %.o, $(src))

3. 三个自动变量

1)$<: 规则中的第一个依赖
        2) $^: 规则中的所有依赖
        3)[email protected]: 规则中的目标

只能在规则中的命令中使用

4. 模式规则
        %.o:%.c
            gcc -c $< -o [email protected]

子目标和终极目标的关系:
更新目标的原则:

三、makefile中变量的使用

makefile编写示例:

app:main.o sub.o mul.o
  gcc main.o sub.o mul.o -o app
  gcc $^ -o [email protected]

%.o:%.c
  gcc -c $< -o [email protected]

makefile中的自动变量:

  • $<: 规则中的第一个依赖
  • [email protected]: 规则中的目标
  • $^: 规则中的所有依赖

只能在规则的命令中使用

原文地址:https://www.cnblogs.com/xuejiale/p/10788404.html

时间: 2024-10-10 01:57:42

Linux中makefile项目管理的相关文章

linux中Makefile文件相关内容

第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefile关系到了整个

Linux中Makefile的编写

通常,在一个大型项目中,会有很多个 .c 文件和 .h 文件,这些文件互相依赖互相关联,开发过程中需要多次修改代码,每当修改其中一个文件的代码时,通常需要将这些文件重新编译一次,这个过程非常麻烦.(不停的输入 gcc -xx xxx 命令),因此 就产生了Make的自动化编译工具,极大的提高了软件开发的效率.而会不会写makefile,也从一个侧面说明了一个人是否具备完成大型工程的能力. 简单来说:Make有两个重要的规则:1.依赖关系.2.依赖方法. 下面简单简述一下make文件的规则: Ma

Linux中的Makefile

在Linux中Makefile扮演一个非常重要的角色,我们可以以Linux为平台在上面编写我们需要的C程序代码, 对于C语言来说,Linux是一个非常好的平台来学习.使用.调试.验证C代码的平台,其强大的Vim编辑器,还 有强大的gcc编译工具和gdb的调试工具,对于我们学习C语言都是一个非常重要的工具,我们可以非常清晰的看 清C语言代码的执行过程,可以通过gdb调试工具观察代码的执行方法等等优点,我在这就不一一列举了. 使用 sp max.c   建立一个新的文件: gcc编译工具: I(i)

linux中的‘make’和‘makefile’

在提及'make'和'makefile'之前有必要先理清楚程序编译的过程,在windows操作系统下,我们一般使用的编写程序的软件有vs.vc等,这些都是集成软件,当编写完程序之后,直接点击进行编译和链接,那么编译器是怎样将程序进行编译的呢? ◆编译过程 (1)预处理阶段 将程序编辑完成之后,在编译之前,编译器会先对程序进行一下预处理,预处理阶段一般的工作是将程序的注释去掉,将头文件在源文件之中进行展开,同时进行宏替换等操作,经过处理之后就会生成一个.i文件. (2)编译阶段 将编译的源程序转换

【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World【转】

本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/73772109 为了弄清内核的组织结构,我们先来实现下面这个简单的例子. 一.增加内核启动Hello World 任务: 内核启动的时候加载Hello驱动,并打印出Hello World 步骤: (1)在drivers目录下新建hello文件夹,在里面实现相应的hello.c.Makefile.Kconfig (2)修改上一级(Linux-3.4.2/drivers下)的Make

Linux 中的文件共享服务

Linux 中的文件共享服务 ============================================================================== 概述:    本章将主要介绍文件共享服务中的ftp服务,内容包括:ftp的程序环境,配置文件的相关介绍,以及如何配置基于虚拟用户的vsftpd服务 文件服务 1)介绍 ★ftp: 应用层,C/S架构,文件共享:file transfer protocol: ★nfs,cifs:文件系统接口,网络文件系统: ☉n

Linux中./configure,make,make install的作用

对LINUX中安装软件使用./configure,make,make install的解释: 例如:   Shell>tar zxvf libevent-1.4.14b-stable.tar.gz      Shell>cd libevent-1.4.14b-stable      Shell>./configure      Shell>make && make install  (1)./configure是检测安装平台的目标特征的.比如它会检测你是不是有CC或

浅谈Linux下Makefile编写

浅谈Linux下Makefile的编写 前言:本文简要介绍Makefile文件的编写规范,结合具体项目中的应用进行讲解. 具体代码地址: https://github.com/AnSwErYWJ/DogFood/blob/master/Makefile 简介 Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作.而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux中.a,.la,.o,.so文件的意义和编程实现    Linux下文件的类型是不依赖于其后缀名的,但一般来讲:        .o,是目标文件,相当于windows中的.obj文件        .so 为共享库,是shared object,用于动态连接的,和dll差不多        .a为静态库,是好多个.o合在一起,用于静态连接        .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息.可以用如下命令查看*.la文件的格式   $file