linux makefile模板

本文详细介绍了一个使用GCC和G++编译器构建跨平台共享库的过程。涵盖了从源文件到最终产物的各个步骤,包括编译参数设置、依赖库链接、头文件路径指定等关键技术点。
# compile and link parameters
#
CC := gcc
CXX := g++
SHARE_FLAG := -shared
#DEBUG_FLAG := -Ddebug
MICROS := \
-DCURL_STATICLIB \
-DCARES_STATICLIB \
-DUSE_ARES \
-DZLIB_WINAPI \
-DHAVE_LIBZ \
-DUSE_MBEDTLS \
-DUSE_OPENSSL
# -DANDROID_DEBUG\


CFLAGS := -Wall -O3 -std=c++0x -fpic $(SHARE_FLAG) $(MICROS) $(DEBUG_FLAG)
LDFLAGS := $(SHARE_FLAG) -fpic


# files & dirs
#
TARGET_NAME := your_target.so
DIR_OBJ = bin/centos/obj
DIR_BIN = bin/centos


# include path
#
INC_PATH = \
-I 3rd/openssl-1.0.2j/centos32/include \
-I 3rd/curl-7.52.1/centos32/include/curl \
-I 3rd/protobuf-2.6.1/centos32/include \
-I 3rd/zlib-1.2.8/centos32/include \
-I 3rd/c-ares-1.12.0/centos32/include \
-I 3rd/libuuid/centos32/include \




# libraries
#
LIBS = \
-L 3rd/curl-7.52.1/centos32/lib -lcurl \
-L 3rd/mbedtls-2.4.0/centos32/lib -lmbedtls \
-L 3rd/mbedtls-2.4.0/centos32/lib -lmbedcrypto \
-L 3rd/mbedtls-2.4.0/centos32/lib -lmbedx509 \
-L 3rd/openssl-1.0.2j/centos32/lib -lssl \
-L 3rd/openssl-1.0.2j/centos32/lib -lcrypto \
-L 3rd/zlib-1.2.8/centos32/lib -lz \
-L 3rd/c-ares-1.12.0/centos32/lib -lcares \
-L 3rd/protobuf-2.6.1/centos32/lib -lprotobuf \
-L 3rd/libuuid/centos32/lib -luuid \
-ldl \
-lrt \


# path for looking source (used in .o:.cpp dependents)
#
VPATH = \
3rd/MarkUp \
3rd/Base64 \
3rd/MD5 \
3rd/bplist \


# source files
#
SOURCE_WITH_DIRS = \
3rd/MarkUp/Markup.cpp \
\
3rd/Base64/AppleBase64.c \
3rd/Base64/base64.cpp \
\
3rd/MD5/AppleMD5.cpp \
src/1.cpp \


#$(warning $(SOURCE_WITH_DIRS))


SOURCES = $(notdir $(SOURCE_WITH_DIRS))
#$(warning $(SOURCES))


OBJS := $(patsubst %.c, $(DIR_OBJ)/%.o, $(patsubst %.cpp, $(DIR_OBJ)/%.o, $(patsubst %.cc, $(DIR_OBJ)/%.o, $(SOURCES))))
#$(warning $(OBJS))


$(DIR_OBJ)/%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@ $(INC_PATH) $(LIB_PATH) $(LIBS)


$(DIR_OBJ)/%.o : %.cpp
$(CXX) $(CFLAGS) -c $< -o $@ $(INC_PATH) $(LIB_PATH) $(LIBS)


$(DIR_OBJ)/%.o : %.cc
$(CXX) $(CFLAGS) -c $< -o $@ $(INC_PATH) $(LIB_PATH) $(LIBS)


$(DIR_OBJ)/%.o : %.cxx
$(CXX) $(CFLAGS) -c $< -o $@ $(INC_PATH) $(LIB_PATH) $(LIBS)


$(TARGET_NAME) : $(OBJS)
$(CXX) $(OBJS) -o $(DIR_BIN)/$(TARGET_NAME) $(LDFLAGS) $(LIBS)

clean: 
rm -rf $(DIR_OBJ)/*.o
rm -rf $(DIR_BIN)/$(TARGET_NAME)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值