一、理解
@
、
@、
@、^、$<的含义
Makefile中,格式为这样的
target : prerequisties
目标:需要依赖的条件
简单的工程直接这样
hello:hello.cc
gcc hello.cc -o hello
但如果文件多了呢?按部就班写会显得很长,所有这时候makefile中的常用命令就产生了,如下:
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
二、举例
工作作用,将头文件放在include文件夹,cpp文件放在source文件夹,test.cc为可执行文件
工程目录:
.
├── include
│ ├── myString.h
│ └── utils.h
├── Makefile
├── source
│ ├── myString.cpp
│ └── utils.cpp
└── test.cc
Makefile文件为
TARGET = test.out
CXXFLAGS += -std=gnu++11
CC = g++
#主函数文件
CXX_FILES := ./test.cc
#cpp文件
SRC_DIRS := ./source/myString.cpp
SRC_DIRS += ./source/utils.cpp
INC_DIRS := -I ./include
LIBS += -lstdc++
LIBS += -ldl -lpthread
$(TARGET):$(CXX_FILES) $(SRC_DIRS)
$(info target: $@)
$(info all: $^)
$(info first: $<)
$(info SRC_DIRS_all: $(SRC_DIRS))
$(CC) -o $@ $^ $(INC_DIRS) $(CXXFLAGS) $(LIBS)
.PHONY:clean
clean:
rm -rf $(TARGET)
运行结果
三、Makefile中打印日志信息
打印用info,Makefile提供了三个命令
$(warning "the value of LOCAL_PATH is$(FILE)")
$(info "the value of LOCAL_PATH is$(FILE)")
$(eror "the value of LOCAL_PATH is$(FILE)")