Makefile 通用生成动态库/静态库

通用.so/.a Makefile

 

# DEBUG can be set to YES to include debugging info, or NO otherwise
DEBUG := NO

# PROFILE can be set to YES to include profiling info, or NO otherwise
PROFILE := NO

#****************************************************************************
ARM_LINUX_CHAIN=../../../../tools/toolchain/
PREFIX=$(ARM_LINUX_CHAIN)/gcc-linaro-arm-linux-gnueabihf_linux/bin/arm-linux-gnueabihf-

CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
LD := $(PREFIX)g++
AR := $(PREFIX)ar rc
STRIP :=$(PREFIX)strip

DEBUG_CFLAGS := -Wall -Wno-format -g -DDEBUG
# RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O3
RELEASE_CFLAGS := -Wall -O3

DEBUG_LDFLAGS := -g
RELEASE_LDFLAGS :=

ifeq (YES, ${DEBUG})
CFLAGS := ${DEBUG_CFLAGS}
LDFLAGS := ${DEBUG_LDFLAGS}
else
CFLAGS := ${RELEASE_CFLAGS}
LDFLAGS := ${RELEASE_LDFLAGS}
endif

SRCROOT := $(shell pwd)
INCDIRS += -I$(SRCROOT)

# .so .a
TLIBS = .a

TARGET_NAME := libtinyl$(TLIBS)
# SRC_CPP := $(wildcard *.cpp)
SRC_CPP := tiny.cpp tinyparser.cpp tinyerror.cpp tinystr.cpp
# OBJ_O := $(addsuffix .o,$(basename ${SRC_CPP}))
OBJ_O := $(patsubst %.cpp, %.o, $(SRC_CPP))

ifeq (.a, $(TLIBS))
$(TARGET_NAME): $(OBJ_O)
@echo "generate $@"
$(AR) $@ $^

$(OBJ_O): %.o:%.cpp
@echo "compile $@"
$(CXX) $(CFLAGS) -c $< -o $@
else ifeq (.so, $(TLIBS))
$(TARGET_NAME): $(OBJ_O)
@echo "generate $@"
$(CXX) -shared $^ -o $@
$(STRIP) $(TARGET_NAME)

$(OBJ_O): %.o:%.cpp
@echo "compile $@"
$(CXX) $(CFLAGS) -fPIC -c $< -o $@
else
@echo "NO support"
endif

all: begin $(TARGET_NAME) finish
begin:
@echo "make $(TARGET_NAME) begin---->"
finish:
@echo "make $(TARGET_NAME) done----->"
clean:
rm -f *.o $(TARGET_NAME)

.PHONY: all clean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值