代码改变世界

一个简单的makefile示例

2016-05-29 18:01  慢跑的小菜  阅读(358)  评论(0编辑  收藏  举报

下面的程序从 Linux 程序设计第四版 引用

文件目录

  

2.c

#include "a.h"
#include "b.h"
void function_two()
{
}

3.c

#include "b.h"
#include "c.h"
void function_three()
{
}

main.c

#include<stdio.h>
#include "a.h"
extern void function_two();
extern void function_three();
int main()
{
  function_two();
  function_three();
  return 0;
}


makefile1:

#This is a simple makefile
all:myapp
#编译器
CC= gcc
#目录
INCLUDE = .
#带调试信息的编译选项
CFLAGS = -g -Wall -ansi
#CFLAGS = -o -Wall -ansi
#安装目录
INSTDIR = $(INCLUDE)/local/bin

myapp:main.o 2.o 3.o
        $(CC) -o myapp main.o 2.o 3.o
main.o:main.c a.h
        $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c
2.o:2.c a.h b.h
        $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
3.o:3.c a.h b.h
        $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c
#-:告诉make命令忽略所有错误
#@:告诉make命令在执行某条命令前不要将该命令显示在标准输出上
clean:
        -rm main.o 2.o 3.o
install:myapp
        @if [ -d $(INSTDIR) ]; \
          then \
     cp myapp $(INSTDIR); \
          chmod a+x $(INSTDIR)/myapp; \
          chmod og-w $(INSTDIR)/myapp; \
          echo "Installed in $(INSTDIR)"; \
        else \
          echo "Sorry, $(INSTDIR) does not exist"; \
        fi
a.h b.h均为一个新文件

也可以只运行

make -f makefile1 install