最近在自己编写自己的测试项目时觉得每次都是用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)
~
~