| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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
- DRFLAGS := -O3 -w
- else
- build_type_dir = debug
- DRFLAGS := -g3 -DDEBUG=1 -Wall -v
- endif
- 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}}
- 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)
- # 默认目标:构建最终的可执行文件
- all: $(bin_dir)/$(target)
- # 链接目标:将所有.o文件链接成可执行文件
- $(bin_dir)/$(target): $(objects)
- @mkdir -p $(dir $@)
- ${CC} $^ -o $@
- # c source
- $(obj_dir)/%.c.o: %.c
- @mkdir -p $(dir $@)
- ${CC} ${CFLAGS} -c $< -o $@
- # c++ source
- $(obj_dir)/%.cpp.o: %.cpp
- mkdir -p $(dir $@)
- ${CXX} ${CXXFLAGS} -c $< -o $@
-
- .PHONY: clean
- clean:
- rm -r ${build_dir}
|