Explorar o código

update Makefile

xuqiang hai 11 meses
pai
achega
2a0a7e5912
Modificáronse 1 ficheiros con 27 adicións e 7 borrados
  1. 27 7
      Makefile

+ 27 - 7
Makefile

@@ -2,9 +2,6 @@ target = ringbuffer
 
 build_type ?= release
 build_type_dir ?= release
-build_dir = build/${build_type_dir}
-obj_dir := ${build_dir}/obj
-bin_dir := ${build_dir}/bin
 
 ifeq (${build_type}, release)
 	build_type_dir := release
@@ -14,20 +11,31 @@ else
 	DRFLAGS := -g3 -DDEBUG=1 -Wall -v
 endif
 
+build_dir = build/${build_type_dir}
+obj_dir := ${build_dir}/obj
+bin_dir := ${build_dir}/bin
+lib_dir	:= ${build_dir}/lib
+
 gcc_std := -std=gnu99
 g++_std := -std=c++11
 includes = src
 
 CFLAGS := ${DRFLAGS} ${gcc_std} ${addprefix -I,${includes}}
 CXXFLAGS := ${DRFLAGS} ${g++_std} ${addprefix -I,${includes}}
+ARFLAGS := rcsD
+LDFLAGS := 
+LDLIBS	:=
 
 src_sources := $(shell find src -name '*.cpp' -or -name '*.c')
 example_sources :=  $(shell find examples -name '*.cpp' -or -name '*.c')
 sources := ${src_sources} ${example_sources}
 objects := $(sources:%=$(obj_dir)/%.o)
 
+static_lib = lib${target}.a
+shared_lib = lib${target}.so
+
 # 默认目标:构建最终的可执行文件
-all: $(bin_dir)/$(target)
+all: $(bin_dir)/$(target) ${lib_dir}/${static_lib} ${lib_dir}/${shared_lib}
 
 # 链接目标:将所有.o文件链接成可执行文件
 $(bin_dir)/$(target): $(objects)
@@ -41,10 +49,22 @@ $(obj_dir)/%.c.o: %.c
 
 # c++ source
 $(obj_dir)/%.cpp.o: %.cpp
-	mkdir -p $(dir $@)
+	@mkdir -p $(dir $@)
 	${CXX} ${CXXFLAGS} -c $< -o $@
+
+# static lib
+${lib_dir}%.a: $(src_sources:%=$(obj_dir)/%.o)
+	@mkdir -p $(dir $@)
+	${AR} ${ARFLAGS} $@ $^
+
+# shared lib
+$(lib_dir)/%.so: $(src_sources:%=$(obj_dir)/%.o)
+	@mkdir -p $(dir $@)
+	${CC} -shared $^ ${LDFLAGS} ${LDLIBS} -o $@
 	
-.PHONY: clean
+.PHONY: clean rebuild
 
 clean:
-	rm -r ${build_dir}
+	rm -r build
+
+rebuild: clean all