项目通用Makefile
Posted itpoorman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目通用Makefile相关的知识,希望对你有一定的参考价值。
.PHONY: all clean OBJ = obj BIN = bin LIB = lib SRC = src GCC = g++ FLAGS = -Wall -g DEFINES = -DLINUX # 头文件目录 INCLUDES = $(patsubst %,-I%, /usr/include /szmetro/download/p2p-c++/p2p-ice/src) # 库文件目录 SYSLIBDIR = /usr/local/lib P2PLIB = /szmetro/download/p2p-c++/p2p-ice/bin LIBDIRS = $(patsubst %,-L%, $(LIB) $(SYSLIBDIR) $(P2PLIB)) # 库文件 ICELIB = Ice IceUtil p2p-ice LIBS = $(patsubst %,-l%, $(ICELIB)) # 默认递归3级目录, 不编译的文件请添加到DISCARD DISCARD = $(wildcard $(SRC)/test/*.cpp) OBJS = $(patsubst $(SRC)/%.cpp,$(OBJ)/%.o, $(filter-out $(DISCARD), $(shell find $(SRC)/* -maxdepth 3 -type f -regex ".*.cpp"))) OBJDIRS = $(sort $(patsubst $(SRC)/%,$(OBJ)/%, $(dir $(OBJS)))) # 可执行文件名 EXEC = $(BIN)/p2p-client all: MKDIR $(EXEC) MKDIR: mkdir $(OBJDIRS) -p $(EXEC): $(OBJS) $(GCC) $(OBJS) -o [email protected] $(LIBDIRS) $(LIBS) # Makefile默认目标 $(OBJ)/%.o: $(SRC)/%.cpp $(GCC) $(INCLUDES) $(DEFINES) $(FLAGS) -c $^ -o [email protected] clean: rm -fr $(OBJ)/* rm -f $(EXEC)
目录结构如:
. |-- bin |-- lib |-- Makefile |-- obj `-- src
以上是关于项目通用Makefile的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段