转自:Makefile入门二、理解$@、$^和$<_hjxu2016的博客-CSDN博客
一、理解$@、$^、$<的含义
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)")
转自:Makefile中执行shell命令_makefile 执行shell命令_汽车电子软件工程师的博客-CSDN博客
Makefile执行shell命令
方式一:$(shell shell_command)
例子:
test = $(shell pwd)
show:
@echo $(test)
结果输出当前工作目录:home/sc/test
方式二:直接在规则中调用
例子:
clean:
rm *.o *.obj