最近在自己编写自己的测试项目时觉得每次都是用G++命令去编译自己的项目还是有点麻烦,也是时候去学一学Makefile的写法了。
因此,针对自己的测试项目的特点(不太使用外部链接库),写了一个较为简单的MAKEFILE,也学到了不少makefile中的知识点
#目标文件名 TARGET_NAME=protectedFile
#目标文件类型(可执行,静态库,动态库) TARGET_PREFIX=
#源文件路径,库路径,头文件路径 SRC_DIR=./src
INC_DIR=-I./inc
OUT_PUT=./output
LIB_FILES=
LIB_PATH=
#最终的输出目标文件名 TARGET_FILE=$(OUT_PUT)/$(TARGET_NAME)$(TARGET_PREFIX)
#首先枚举所有cpp,生产obj列表 CPP_FILES=$(wildcard $(SRC_DIR)/*.cpp) OBJ_FILES=$(patsubst %.cpp, %.o ,$(CPP_FILES))
#生成入口
all:$(TARGET_NAME) @echo "begin compile $(TARGET_NAME)"
$(TARGET_NAME):$(OBJ_FILES) @echo "begin link object files $(OBJ_FILES)"
%.o:%.cpp @echo "$< has been changed or $@ has been changed,need compile" g++ -o $@ -c $< $(LIB_FILES) $(LIB_PATH) $(INC_DIR)
#产生目标文件 ifeq ($(TARGET_PREFIX),) @echo "===============link executable file $@==========" g++ $(OBJ_FILES) $(LIB_FILES) $(LIB_PATH) -o $(TARGET_FILE) endif
clean: rm -rf $(TARGET_FILE) rm -rf $(OBJ_FILES) ~ ~