
 
 

 
 
 
 
 
##MakeFile
MAIN :=Examples/main.cpp#主文件目录
MAIN.o:=objs/main.o##目标文件目录
cpp_srcs :=$(shell find src -name "*.cpp")
cpp_objs :=$(patsubst src/%.cpp,objs/%.o,$(cpp_srcs))
#加头文件的编译选项
include_dirs :=/home/shenlan/Group/00.lsa/project/include
##每个路径要加一个-I的选项,是给头文件的  即从当前目录搜索头文件
I_options := $(include_dirs:%=-I%)##不能打空格
##编译也要加一些选项
compile_options := -g -w -O3 $(I_options)##编译也要加一些选项
$(MAIN.o) : $(MAIN)
	@echo [INFO] : Compile $^ to $@
	@mkdir -p $(dir $@)
	@g++  -c $^  -o $@ $(compile_options)
##########编译
objs/%.o : src/%.cpp
	@echo [INFO] : Compile $^ to $@
#建立obj文件夹
	@mkdir -p $(dir $@)
##编译成二进制文件
	@g++  -c $^  -o $@  $(compile_options)
##########链接所有.o后缀文件
#可执行文件依赖于
workspace/exec : $(cpp_objs) $(MAIN.o)
	@echo [INFO]: Link $^ to $@
	@mkdir -p $(dir $@)
	@g++  $^  -o $@
########执行
run:workspace/exec
	@./$<
#执行
clean:
	@rm -rf objs workspace/exec
debug :
	@echo $(cpp_srcs)
	@echo $(cpp_objs)
	@echo $(I_options)
	@echo $(MAIN.o)
	@echo $(compile_options)
.PHONY :debug run clean 

 
 
 
 
 
 
 
 
 
 
 
 
 
 



















