快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

如何使用make


  在shell的提示符号下,若键入"make",则它会到目前的目录下找寻Makefile这个档案。然後依照Makefile中所记录的步骤一步一步的来执行。在我们写程式的时候,如果事先就把compiler程式所需要的步骤先写在Makefile中的话,想要compiler程式的时候就只要打入make的指令。只要程式无误的话,就可以获得所需要的结果了! Makefile的格式:
  (1)注解:
   在Makefile中,任何以"#"为开头的的文字皆为注解,make在解译Makefile的时候会忽略它。
  (2)续接下行:
   在Makefile中,若一行不足以容纳该命令的时候。可於该行之最後加一反斜线()表示下一行为本行之延续,两行应视为一行来处理。
  (3)巨集(macro)
   巨集的格式为: string = value
   例如:
   CFLAGS = -O -systype bsd43
   其实make本身已有许多的default的macro,如果要查看这些macro的话,可以下make -p的命令。
  (4)法则(Rules)
   格式如下:
   : depend
  
  
   ....
   : depend
  
  
   ....
  (5)一个非常简单的Makefile
   假设我们有一个程式,共分为下面的部份:
   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键)。
  
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论