简单makefile编写

1、动态库和静态库

LIB_NAME = libtest

PROJECT_ROOT_PATH = /MyProject

TARGET_SO = true
#TARGET_AR = true

ifdef TARGET_SO
TARGET = $(LIB_NAME).so
endif

ifdef TARGET_AR
TARGET = $(LIB_NAME).a
endif

CC = gcc
CXX = g++
AR = ar
ARFLAGS = -rcv
SOFLAGS = -fPIC -shared
INCPATH = -I. 
LDFLAGS = -L. 
LIBS = 

CXXFLAGS = -w -g $(INCPATH)

OBJS = libtest.o

$(TARGET) : $(OBJS)
ifdef TARGET_SO
	$(CXX) $(SOFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS)
endif
ifdef TARGET_AR
	$(AR) $(ARFLAGS) $@ $^
endif

.PHONY : clean
clean :
	-rm -rf $(OBJS) $(TARGET)
	-rm -rf $(PROJECT_ROOT_PATH)/include/$(LIB_NAME)

.PHONY : install
install :
	cp $(TARGET) $(PROJECT_ROOT_PATH)/lib
	mkdir -p $(PROJECT_ROOT_PATH)/include/$(LIB_NAME)
	cp *.h $(PROJECT_ROOT_PATH)/include/$(LIB_NAME)

2、可执行文件

EXE_NAME = test

PROJECT_ROOT_PATH = /MyProject

CC = gcc
CXX = g++
INCPATH = -I../include -I$(PROJECT_ROOT_PATH)/include 
LDFLAGS = -L$(PROJECT_ROOT_PATH)/lib  #链接库路径
LIBS = -ltest  #链接库名称
CXXFLAGS = -g -Wall -DDEBUG -D_REENTRANT $(INCPATH)  #编译器选项

OBJS = test.o

$(EXE_NAME) : $(OBJS)
	$(CXX) -o $@ $^ $(LDFLAGS) $(LIBS)

.PHONY : clean
clean :
	-rm -rf $(OBJS) $(EXE_NAME)

.PHONY : install
install :
	cp $(EXE_NAME) $(PROJECT_ROOT_PATH)/bin


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值