|
@@ -2,9 +2,6 @@ target = ringbuffer
|
|
|
|
|
|
|
|
build_type ?= release
|
|
build_type ?= release
|
|
|
build_type_dir ?= 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)
|
|
ifeq (${build_type}, release)
|
|
|
build_type_dir := release
|
|
build_type_dir := release
|
|
@@ -14,20 +11,31 @@ else
|
|
|
DRFLAGS := -g3 -DDEBUG=1 -Wall -v
|
|
DRFLAGS := -g3 -DDEBUG=1 -Wall -v
|
|
|
endif
|
|
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
|
|
gcc_std := -std=gnu99
|
|
|
g++_std := -std=c++11
|
|
g++_std := -std=c++11
|
|
|
includes = src
|
|
includes = src
|
|
|
|
|
|
|
|
CFLAGS := ${DRFLAGS} ${gcc_std} ${addprefix -I,${includes}}
|
|
CFLAGS := ${DRFLAGS} ${gcc_std} ${addprefix -I,${includes}}
|
|
|
CXXFLAGS := ${DRFLAGS} ${g++_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')
|
|
src_sources := $(shell find src -name '*.cpp' -or -name '*.c')
|
|
|
example_sources := $(shell find examples -name '*.cpp' -or -name '*.c')
|
|
example_sources := $(shell find examples -name '*.cpp' -or -name '*.c')
|
|
|
sources := ${src_sources} ${example_sources}
|
|
sources := ${src_sources} ${example_sources}
|
|
|
objects := $(sources:%=$(obj_dir)/%.o)
|
|
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文件链接成可执行文件
|
|
# 链接目标:将所有.o文件链接成可执行文件
|
|
|
$(bin_dir)/$(target): $(objects)
|
|
$(bin_dir)/$(target): $(objects)
|
|
@@ -41,10 +49,22 @@ $(obj_dir)/%.c.o: %.c
|
|
|
|
|
|
|
|
# c++ source
|
|
# c++ source
|
|
|
$(obj_dir)/%.cpp.o: %.cpp
|
|
$(obj_dir)/%.cpp.o: %.cpp
|
|
|
- mkdir -p $(dir $@)
|
|
|
|
|
|
|
+ @mkdir -p $(dir $@)
|
|
|
${CXX} ${CXXFLAGS} -c $< -o $@
|
|
${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:
|
|
clean:
|
|
|
- rm -r ${build_dir}
|
|
|
|
|
|
|
+ rm -r build
|
|
|
|
|
+
|
|
|
|
|
+rebuild: clean all
|