首页 > 代码库 > Linux Makefile多目录的编写
Linux Makefile多目录的编写
手头一个项目,需要编写项目的makefile
多目录结构:
csource/
├── common
│ └── sqlite3
├── inc
│ ├── curl
│ ├── lua
│ └── Protection
├── lib
│ ├── arm
│ └── linux
├── obj
├── out
│ ├── arm
│ └── linux
├── src
源码目录src,输出目录out,include目录inc,输入链接库目录lib,常用静态函数和sqlite3目录common
makefile如下:
1 test = libtest.so 2 test_a = libtest.a 3 4 LDFLAGS = -O2 -shared -m32 -ldl -pthread -lrt -L./lib/linux -llua -lz -lcurl 5 CFLAGS = -Wno-write-strings -m32 -O2 -D__LINUX -D_DEBUG -fPIC 6 CXX = g++ 7 CC = gcc 8 AR = ar rcu 9 RANLIB = ranlib10 11 12 INC_DIR = ./inc13 COM_DIR = ./common14 SQL_DIR = ./common/sqlite315 LUA_DIR = ./inc/lua16 PRO_DIR = ./inc/Protection17 INCLUDE = -I$(LUA_DIR) -I$(INC_DIR) -I$(COM_DIR) -I$(SQL_DIR) -I$(PRO_DIR)18 DIR_SRC = http://www.mamicode.com/src19 DIR_OBJ = ./obj20 DIR_BIN = ./out/linux21 22 SRC = http://www.mamicode.com/$(wildcard ${DIR_SRC}/*.cpp)23 OBJ = $(patsubst %.cpp,${DIR_OBJ}/%.o,$(notdir ${SRC})) $(DIR_OBJ)/sqlite3.o24 25 SO_TARGET = ${DIR_BIN}/${test}26 LIB_TARGET= ${DIR_BIN}/${test_a}27 28 all:$(SO_TARGET) $(LIB_TARGET)29 30 ${SO_TARGET}:${OBJ}31 $(CXX) $(OBJ) -o $@ $(LDFLAGS)32 33 ${LIB_TARGET}:${OBJ}34 $(AR) $@ $(objects)35 $(RANLIB) $@36 37 ${DIR_OBJ}/%.o:${DIR_SRC}/%.cpp38 $(CXX) $(CFLAGS) $(INCLUDE) -c $< -o $@39 40 ${DIR_OBJ}/sqlite3.o:${DIR_SRC}/sqlite3.c41 $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@42 43 .PHONY:clean44 clean:45 -find ${DIR_OBJ} -name *.o -exec rm -rf {} \;
Linux Makefile多目录的编写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。