一个简单的MAKEFILE示例

来源:互联网 发布:顾宪成 知乎 编辑:程序博客网 时间:2024/04/30 04:23

最近在自己编写自己的测试项目时觉得每次都是用G++命令去编译自己的项目还是有点麻烦,也是时候去学一学Makefile的写法了。

因此,针对自己的测试项目的特点(不太使用外部链接库),写了一个较为简单的MAKEFILE,也学到了不少makefile中的知识点

#目标文件名

TARGET_NAME=


#目标文件类型(可执行,静态库,动态库)

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"


%.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)