linux makefile模板

# 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)

猜你喜欢

转载自blog.csdn.net/sepnineth/article/details/78083462