Make工程管理器&Makefile编写



Make&Makefile


什么是make:


   一个软件工程通常会包含几十上百个文件,如果每次编译都通过命令行手动编译往往会很麻烦而且效率低下。
   在Windows平台上的VC、VB等都有一个工程(Project)的概念。一旦建立了一个工程,这些开发平台会自动地维护其中的各种文件,从而可以很高效地完成编译工作。
   幸运的是,在Linux中同样有一个功能强大、使用方便的工程管理工具,这就是make。
什么是makefile:
   使用make工具,首先要编写Makefile文件。


makefile文件编写:


   一个Makefile文件包含五个方面的内容:
    1.具体规则
    2.隐含规则
    3.定义变量
    4.指令
    5.注释


编写规则:


   Makefile内容的核心是一系列的规则,这些规则告诉make程序要做的事以及做这件事所依赖的条件。规则的基本格式是:


target: dependency
 (Tab字符)command

 target(目标): 通常是要产生的文件的名称
 dependency(依赖): 指用来输入从而产生目标的文件
 command(命令): 是make执行的动作,一个规则可以有多条命令,每个命令占一行。命令行的第一个字符是Tab。


例如:


game : $(objects)                      # 定义game的生成规则
 $(CC) -o edit $(objects)
main.o : defs.h                          # 定义main.o的规则,包含隐含规则
mouse.o : defs.h command.h # 定义mouse.o的规则,包含隐含规则
command.o : defs.h command.h
display.o : defs.h buffer.h
.PHONY : clean
clean :                                   # 定义clean的规则,无依赖
 $(RM) edit $(objects)


      game的生成规则包含了规则的三个基本要素:目标、依赖、命令;main.o等规则没有命令,属于隐含规则(implicit rule)。隐含规则能够告诉make使用传统的标准方法完成任务。例如,生成一个目标文件的方法是使用C编译器编译C语言源程序,这个步骤所用到的命令基本都是相同的。使用隐含规则就无须详细指定这些命令,而make能按照文件名的后缀的变化,决定所采用的规则。clean规则没有依赖,不属于编译的内容,只是完成一个指定的动作。是一个伪目标。


Makefile的变量


   变量是在Makefile中定义的名字,用来代替一个文本字符串,该文本字符串被称为该变量的值。Makefile中
常见的预定义变量有:

          

   系统默认特殊变量包括:

   定义或修改变量值的方法是使用赋值操作,具体操作如下:

       


使用makefile自定义的变量的方法是:


$(),如果变量名只是一个字符,则小括号可以省略。

 

make工具的基本用法


make [-C dir] [-f file] [target ...]


-C dir: 执行时进入dir目录,默认是当前目录
-f file: 使用file名称作为Makefile
target: 要完成的目标,目标在Makefile中定义,默认是定义的第1个目标

     

修改与使用makefile模板


   模板中包含bin,script,main,add,sub,include目录以及Makefile文件。修改步骤为:

     1. 删除add,sub等文件夹并将用到的除main.c文件以外的所有.c文件保存在以other(随意)目录下的src目录自己创建/other/src路径)
     2. 在other目录下复制main目录里的Makefile文件
     3. 在/client/main/src路径下覆盖原先的main.c文件,覆盖文件为自己所编写的main.c文件,并修改main.c文件:在#include<stdio.h>下添加一行#include ../../include/myhead.h
     4. 修改include目录下的myhead.h头文件,其中包括声明自己所需要的函数。
     5. 修改script目录下的Makefile文件;包括Target一行和Modules一行。Target一行修改为最终输出的执行文件的名称(不可与现有的文件夹重名);Modules一行修改为使用到的目录(包括main和other)
     6. 全部完成后在/client路径下输入make即可完成编译,生成执行文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值