码迷,mamicode.com
首页 > 其他好文 > 详细

makefile 嵌套

时间:2018-11-10 23:52:09      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:detail   file   冲突   pat   工作   lib   details   根目录   调用   

 

目录结构:

技术分享图片

 

dynamic 和 static 两个目录实现加法功能, 分别生成动态库和静态库,   main.c 主文件链接加法功能,  终端命令执行:   make dynamic=1  则编译动态库进行链接 ,   make 静态库编译

动态库的makefile内容:

# CROSS_COMPILE := 
# CC := $(CROSS_COMPILE)gcc
# CPP := $(CROSS_COMPILE)g++

TARGET := libadd.so
OBJ := sub.o
SRCS = $(wildcard *.c)

all:
	$(CC) -c -o $(OBJ) -fPIC $(SRCS)
	$(CC) -shared -fPIC -o $(TARGET)  $(OBJ)


.PHONY : clean
clean:
	rm $(OBJ) $(TARGET) -f

 静态库makefile内容:

# CROSS_COMPILE := 
# CC := $(CROSS_COMPILE)gcc
# CPP := $(CROSS_COMPILE)g++
# AR := $(CROSS_COMPILE)ar

TARGET := libadd.a
OBJ := sub.o
SRCS = $(wildcard *.c)

all:
	$(CC) -c -o $(OBJ)  $(SRCS)
	$(AR) -rcs -o $(TARGET)  $(OBJ)


.PHONY : clean
clean:
	rm $(OBJ) $(TARGET) -f

  

根目录的makefile内容:

CROSS_COMPILE := 
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)AR
CPP = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
NM = $(CROSS_COMILE)nm

STRIP = $(CROSS_COMPILE)strip
OBJDUMP = $(CROSS_COMPILE)objdump
OBJCOPY = $(CROSS_COMPILE)objcopy



ifndef dynamic
LIBPATH := static
else
LIBPATH := dynamic
endif


CFLAGS := -Wall -O2 -g 
CFLAGS += -I $(shell pwd)/$(LIBPATH) 

LDFLAGS := -lm -L$(LIBPATH) -ladd


TOPDIR := $(shell pwd)

SRCS = $(wildcard *.c)


TARGET := main
OBJ := main.o

all:$(TARGET)
# $(TARGET):    这种方式不会自动推导调用 %.o:%.c 这个内容
$(TARGET):$(OBJ)
	make -C $(LIBPATH)
	$(CC) $(OBJ) $(CFLAGS) $(LDFLAGS) -o $(TARGET)
#  这样放会出现找不到链接库的问题,源文件要放在链接库前面
# $(CC)  $(CFLAGS) $(LDFLAGS) -o $(TARGET) $(SRCS)  

%.o:%.c
	$(CC) -c $(CFLAGS)  $^ -o $@



# .PHONY是一个伪目标,可以防止在Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突
.PHONY : clean
clean:
	make -C $(LIBPATH) clean
	rm $(OBJ) $(TARGET) -f

  

 源码下载路径: https://download.csdn.net/download/aba13579/10777167

 

参考链接: https://blog.csdn.net/qq_21792169/article/details/50448639

makefile 嵌套

标签:detail   file   冲突   pat   工作   lib   details   根目录   调用   

原文地址:https://www.cnblogs.com/hzijone/p/9940935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!