Makefile入门二、理解$@、$^和$<


前面简单记录了一下Makefile中helloworld的用法,这次来理解一些$@、$^、$<的含义

一、理解$@、$^、$<的含义

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)")
  • 31
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值