Linux 版 (精华区)

发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标  题: ◇ Make 使用方法 -- cwhuang 整理
发信站: 紫 丁 香 (Sun Nov  8 17:59:05 1998), 转信


寄信人: guest.bbs@hgluo.hust.edu.cn 
标  题: ◇ Make 使用方法 -- cwhuang 整理
发信站: 华南理工大学 BBS木棉站
日  期: Thu Feb 20 14:25:49 1997

如何使用make?

在shell的提示符号下,若键入"make",则它会到目前的目录下找寻Makefile这个档案
。然後依照Makefile中所记录的步骤一步一步的来执行。在我们写程式的时候,如果
事先就把compiler程式所需要的步骤先写在Makefile中的话,想要compiler程式的时候
就只要打入make的指令。只要程式无误的话,就可以获得所需要的结果了!




Makefile的格式:

;35m(1)注解:m
        在Makefile中,任何以"#"为开头的的文字皆为注解,make在解译Makefile的
        时候会忽略它。

;35m(2)续接下行:m
        在Makefile中,若一行不足以容纳该命令的时候。可於该行之最後加一反斜线
        (\)表示下一行为本行之延续,两行应视为一行来处理。

;35m(3)巨集(macro)m
        巨集的格式为: <string> = <value>
        例如:
                CFLAGS = -O -systype bsd43

        其实make本身已有许多的default的macro,如果要查看这些macro的话,可以
        下make -p的命令。

;35m(4)法则(Rules)m
        格式如下:
        <Target 1>: <depend>
                <command 1>
                <command 2>
                ....

        <Target 2>: <depend>
                <command 3>
                <command 4>
                ....

;35m(5)一个非常简单的Makefilem
   假设我们有一个程式,共分为下面的部份:
   menu.c       主要的程式码部份
   menu.h       menu.c的include file
   utils.c      提供menu.c呼叫的一些function calls
   utils.h      utils.c的include file
   同时本程式亦叫用了ncurses的function calls。
   而menu.c和utils.c皆放在/usr/src/menu下。
   但menu.h和utils.h却放在/usr/src/menu/include下。
   而程式做完之後,执行档名为menu且要放在/usr/bin下面。

# This is the Makefile of menu
CC = gcc
CFLAGS = -DDEBUG -c
LIBS = -lncurses
INCLUDE = -I/usr/src/menu/include

all: clean install

install: menu
        chmod 750 menu
        cp menu /usr/bin

menu: menu.o utils.o
        $(CC) -o $@ $? $(LIBS)

menu.o:
        $(CC) $(CFLAGS) -o $@ menu.c $(INCLUDE)

utils.o:
        $(CC) $(CFLAGS) -o $@ utils.c $(INCLUDE)

clean:
        -rm *.o
        -rm *~


在上述的Makefile中,要使用某个macro可用$(macro_name)如此的形式。make会自动
的加以展开。
$@为该rule的Target,而$?则为该rule的depend。
若在command的前面加一个"-",表示若此command发生错误则不予理会,继续执行下去。
上述的Makefile的关系可以表示如下:
                        all
                        / \
                   clean   install
                               \
                               menu
                              /    \
                          menu.o    utils.o

若只想清除source以外的档案,可以打make clean。
若只想做出menu.o可以打make menu.o。
若想一次全部做完,可以打make all或是make。
要特别注意的是command之前一定要有一个TAB(即TAB键)。

--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.734毫秒