国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

多子目錄的makefile編譯庫模板

2019-11-11 06:00:44
字體:
供稿:網(wǎng)友

經(jīng)過不斷的實(shí)驗(yàn),終于改出來了一個(gè)可以用于多個(gè)子目錄,多個(gè)文件的Makefile模板,只用來生成靜態(tài)庫文件,后面再繼續(xù)添加內(nèi)容吧

先來看下目錄結(jié)構(gòu)

[zhang@zwfedora23 libs]$ tree.├── Makefile├── src│ ├── libs1.c│ ├── libs1.h│ ├── libs2.c│ ├── libs2.h│ └── main.c├── src1│ ├── libs1a.c│ ├── libs1a.h│ ├── libs1.c│ └── libs1.h└── src2 ├── libs2.c └── libs2.h3 directories, 12 files[zhang@zwfedora23 libs]$

具體的Makefile文件內(nèi)容:

LIB_SRC1 = ./src1LIB_SRC2 = ./src2LIB_A := libs.a#VPATH = $(LIB_SRC1) $(LIB_SRC2)SRC := $(wildcard $(LIB_SRC1)/*.c)SRC += $(wildcard $(LIB_SRC2)/*.c)OBJS := $(patsubst %.c,%.o,$(SRC))CC:=gccCFLAGS:= -I./.PNONY:all cleanall: $(LIB_A)clean: @rm -f $(OBJS) @rm -f $(LIB_A) $(OBJS):%.o:%.c $(CC) -c $(CFLAGS) $^ -o $@$(LIB_A):$(OBJS) @echo '$$OBJS'=$(OBJS) @echo '$$(SRC)/*.c'=$(SRC) @echo '$$@' = $@ @echo '$$^' = $^ @echo '$$<' = $< $(AR) rcv $@ $^

仔細(xì)看的話,其實(shí)這個(gè)Makefile中也沒有什么東西,也大概完全可以看懂,但是在今天之前要是讓我從0開始手寫或者在別人的Makefile中改出一個(gè)來我還真有點(diǎn)含糊。但是現(xiàn)在不會(huì)了,今天晚上試了好多終于有成果了。 看下最后執(zhí)行的效果:

[zhang@zwfedora23 libs]$ makegcc -c -I./ src1/libs1.c -o src1/libs1.ogcc -c -I./ src1/libs1a.c -o src1/libs1a.ogcc -c -I./ src2/libs2.c -o src2/libs2.o$OBJS=./src1/libs1.o ./src1/libs1a.o ./src2/libs2.o$(SRC)/*.c=./src1/libs1.c ./src1/libs1a.c ./src2/libs2.c$@ = libs.a$^ = src1/libs1.o src1/libs1a.o src2/libs2.o$< = src1/libs1.oar rcv libs.a src1/libs1.o src1/libs1a.o src2/libs2.oa - src1/libs1.oa - src1/libs1a.oa - src2/libs2.o[zhang@zwfedora23 libs]$ tree.├── libs.a├── Makefile├── src│ ├── libs1.c│ ├── libs1.h│ ├── libs2.c│ ├── libs2.h│ └── main.c├── src1│ ├── libs1a.c│ ├── libs1a.h│ ├── libs1a.o│ ├── libs1.c│ ├── libs1.h│ └── libs1.o└── src2 ├── libs2.c ├── libs2.h └── libs2.o3 directories, 16 files[zhang@zwfedora23 libs]$

可以看到,每個(gè).c文件對(duì)應(yīng)的.o文件都在同一個(gè)目錄,最后的.a文件在項(xiàng)目的根目錄,這正是我想要的,一點(diǎn)都不差。而且我還寫了個(gè)main.c來測(cè)試生成的.a文件,結(jié)果也是正確的。

[zhang@zwfedora23 libs]$ gcc src/main.c -L./ -ls -o test[zhang@zwfedora23 libs]$ ./test hellohello,libs2[zhang@zwfedora23 libs]$ lslibs.a Makefile src src1 src2 test[zhang@zwfedora23 libs]$

收工。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安阳县| 恩平市| 平远县| 长白| 江城| 论坛| 潜山县| 武宁县| 视频| 安顺市| 饶河县| 资溪县| 岑溪市| 内江市| 正阳县| 海丰县| 视频| 米泉市| 阿坝县| 涟源市| 梁山县| 三穗县| 义乌市| 海南省| 固始县| 湟源县| 石景山区| 邵东县| 巴塘县| 林周县| 特克斯县| 泰安市| 遂川县| 九龙县| 万安县| 镇安县| 柳林县| 潜江市| 南开区| 修文县| 方正县|