下面的程序从 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