歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

多個文件夾的Makefile

大家一定要注意,用makefile編譯多個C程序的時候,只能有一個main函數

好閒話少敘,今天我要有makefile實現什麼功能呢,已知有兩個文件夾,每個文件夾下分別有三個C程序,使用makefile編譯它們

首先建立第一個文件夾src及其三個.c 三個.h文件

vim guo.c

#include<stdio.h>
#include"zhi.h"
#include"yuan.h"
#include"/home/feifei/Desktop/text/exit/qian.h"
#include"/home/feifei/Desktop/text/exit/ru.h"
#include"/home/feifei/Desktop/text/exit/shi.h"
void main()
{
printf("guo\n");
zhi();
yuan();
qian();
ru();
shi();

}


vim zhi.c  //略

vim zhi.h

vim yuan.c 

vim yuan.h


vim makefile

.PHONY:all
CC=gcc
all:guo.o zhi.o yuan.o
         
guo.o:guo.c
        $(CC) -c guo.c
        cp guo.o ../
zhi.o:zhi.c zhi.h
        $(CC) -c zhi.c
        cp zhi.o ../
yuan.o:yuan.c yuan.h
        $(CC) -c yuan.c
        cp yuan.o ../
clean:
        rm -f *.o


好了,這第一個文件夾及裡面的內容就建好了,下面我們建立第二個文件夾exit 

(注意這裡面的函數不能使用main函數)

vim qian.c

#include<stdio.h>
void qian()
{
        printf("qian\n");


}

vim qian.h

void qian();

vim ru.c //略

vim ru.h

vim shi.c

vim shi.h

vim makefile

.PHONY:obj
CC=gcc
obj:qian.o ru.o shi.o


qian.o:qian.c qian.h
        $(CC) -c qian.c
        cp qian.o ../
ru.o:ru.c ru.h
        $(CC) -c ru.c ru.h
        cp ru.o ../
shi.o:shi.c shi.h
        $(CC) -c shi.c shi.h
        cp shi.o ../
clean:
        rm -f *.o


好啦,我們返回上一級目錄,在這裡編寫makefile

vim makefile

feifei:guo.o zhi.o yuan.o qian.o ru.o shi.o
        gcc guo.o zhi.o yuan.o qian.o ru.o shi.o -o feifei
guo.o:
        cd ./src && $(MAKE)
zhi.o:
        cd ./src && $(MAKE)
yuan.o:
        cd ./src && $(MAKE)
qian.o:
        cd ./exit && $(MAKE)
ru.o:
        cd ./exit && $(MAKE)
shi.o:
        cd ./exit && $(MAKE)
clean:
        rm -r *.o feifei

然後make就可以了

Copyright © Linux教程網 All Rights Reserved