makefile-2

转自: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值