标签:
首先在工程文件夹下创建bin,src,lib,以及include等文件夹,在工程文件夹外创建lib或者lib64文件夹,将文件类型分别放入工程文件夹下的几个文件夹,然后根据实际需要对下面的Makefile1进行实际需要的改写即可,最终会在src下生成*.o等obj文件,以及在工程文件夹外的lib或者lib64下生成需要的静态库文件。这里并没有生成.exe执行文件
WORKROOT=../.. LIBNAME = flumelog BIN_DIR = bin SRC_DIR = src LIB_DIR = lib INCLUDE = -I./include -I/usr/local/include -I../lib64/thrift/include -I../cfg/include INSTALL_PATH=$(WORKROOT)/flumelog LIB = ../lib64/thrift/lib/libthrift.a ../cfg/lib/libcfg.a -static -lpthread SOURCES = $(wildcard $(SRC_DIR)/*.cpp) OBJS = $(patsubst %.cpp,%.o,$(SOURCES)) COMMON_DEFINES = -DLINUX -D_REENTERANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 DEFINES=$(COMMON_DEFINES) #CXXFLAGS= -fPIC -g -Wall -W $(DEFINES) $(INCLUDE) CXXFLAGS= -g -Wall -W $(DEFINES) $(INCLUDE) CXX = g++ AR = ar #========================================================================= OUTPUT_LIB=lib$(LIBNAME).a BIT:=$(shell getconf LONG_BIT) ifeq (${BIT}, 64) OUTPUT_PATH=../lib64/$(LIBNAME) else OUTPUT_PATH=../lib/$(LIBNAME) endif #-----------------------------------------------------------------# # make all #-----------------------------------------------------------------# all: clean outputdir outputdir: output if [ ! -d $(OUTPUT_PATH) ]; then mkdir $(OUTPUT_PATH); fi if [ ! -d $(OUTPUT_PATH)/lib ]; then mkdir $(OUTPUT_PATH)/lib; fi if [ ! -d $(OUTPUT_PATH)/include ]; then mkdir $(OUTPUT_PATH)/include; fi cp lib/$(OUTPUT_LIB) $(OUTPUT_PATH)/lib cp include/*.h $(OUTPUT_PATH)/include #-----------------------------------------------------------------# # make library #-----------------------------------------------------------------# output: $(OBJS) if [ ! -d $(LIB_DIR) ]; then mkdir $(LIB_DIR); fi ar -ruv $(LIB_DIR)/$(OUTPUT_LIB) $(OBJS) $(OBJS): %.o: %.cpp $(CXX) -c $< -o $@ $(INCLUDE) $(LIB) $(CXXFLAGS) #-----------------------------------------------------------------# # make clean #-----------------------------------------------------------------# clean: rm -f $(OBJS) $(LIB_DIR)/*.a #-----------------------------------------------------------------# # make install #-----------------------------------------------------------------# install: outputdir if [ ! -d $(INSTALL_PATH) ]; then mkdir -p $(INSTALL_PATH); fi cp -rf $(OUTPUT_PATH)/* $(INSTALL_PATH)
这里是Makefile2,利用前面生成的libflumelog.a以及所依赖的库,即可生成最终的exe文件,同样适合套用
test: test.cpp g++ -g -o test -DHAVE_NETINET_IN_H test.cpp -I/usr/locl/include -I../../cfg/include -I../../lib64/thrift/include -I../../lib64/flumelog/include/ -Wl,--start-group ../../lib64/flumelog/lib/libflumelog.a ../../lib64/thrift/lib/libthrift.a ../../cfg/lib/libcfg.a -lpthread -Wl,--end-group
。
标签:
原文地址:http://www.cnblogs.com/morebeauty/p/5771460.html