Makefile 特殊符号 - `-` `@` `+` `$` `$$`

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/chengyq116/article/details/88368322

Makefile 特殊符号 - - @ + $ $$

1. - 符号 (连字符)

任何命令行的任何非零退出状态都被忽略,忽略当前命令行执行时所遇到的错误。
make 在执行命令的时候,如果遇到 error,会退出执行。加上减号的目的是即便此命令行执行出错,那么也不要管,继续执行 make。
通常删除或者创建文件时,遇到文件不存在或者已经创建。如果希望忽略掉错误,继续执行,就可以在命令行前面添加 -

.PHONY : clean
clean :
	-rm $(objects)

   
   
  • 1
  • 2
  • 3

2. @ 符号 (at 符号)

通常 makefile 会将其执行的命令行在执行前输出到屏幕上。如果将 @ 添加到命令行前,这个命令将不被 make 回显出来,即不显示命令本身而只显示结果。

# ============================================================================
# Name        : Makefile
# Author      : Yongqiang Cheng
# Version     : Feb 16, 2019
# Copyright   : Copyright 2019 ForeverStrong License
# Description : Workspace in C, Ansi-style
# ============================================================================

ifdef DEFINE_VAR
VAR = “!!!Hello World!!!”
endif

ifeq ($(OPT), define)
VAR ?= “!FIRST!”
endif

ifeq ($(OPT), add)
VAR += “!SECOND!”
endif

ifeq ($(OPT), recover)
VAR := “!THIRD!”
endif

x = cheng
y = $(x) yong
x = qiang

m := face
n := $(m) person
m := pedestrian

all :
@echo Compiling Kernel Module
echo Compiling Kernel Module
@echo $(VAR)
@echo $(x)
@echo $(y)
@echo $(m)
@echo $(n)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
strong@foreverstrong:~/Desktop/makefile_work$ make DEFINE_VAR=true
Compiling Kernel Module
echo Compiling Kernel Module
Compiling Kernel Module
!!!Hello World!!!
qiang
qiang yong
pedestrian
face person
strong@foreverstrong:~/Desktop/makefile_work$

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. + 符号 (加号)

使用加号修饰符让命令始终执行。命令行执行时不受到 make 的 -n -t -q 三个参数的影响,忽略这三个参数。
如果 make 执行时,使用 -n--just-print。该参数显示命令,不会执行命令。这个功能有利于调试 Makefile,方便查看执行的命令形式和顺序。

# ============================================================================
# Name        : Makefile
# Author      : Yongqiang Cheng
# Version     : Feb 16, 2019
# Copyright   : Copyright 2019 ForeverStrong License
# Description : Workspace in C, Ansi-style
# ============================================================================

ifdef DEFINE_VAR
VAR = “!!!Hello World!!!”
endif

ifeq ($(OPT), define)
VAR ?= “!FIRST!”
endif

ifeq ($(OPT), add)
VAR += “!SECOND!”
endif

ifeq ($(OPT), recover)
VAR := “!THIRD!”
endif

x = cheng
y = $(x) yong
x = qiang

m := face
n := $(m) person
m := pedestrian

all :
@echo Compiling Kernel Module
@echo $(VAR)
echo Compiling Kernel Module
@echo $(VAR)
@+echo Compiling Kernel Module
@echo $(VAR)
@echo $(x)
@echo $(y)
@echo $(m)
@echo $(n)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
strong@foreverstrong:~/Desktop/makefile_work$ make
Compiling Kernel Module

echo Compiling Kernel Module
Compiling Kernel Module

Compiling Kernel Module

qiang
qiang yong
pedestrian
face person
strong@foreverstrong:~/Desktop/makefile_work$

strong@foreverstrong:~/Desktop/makefile_work$ make -n
echo Compiling Kernel Module
echo
echo Compiling Kernel Module
echo
echo Compiling Kernel Module
Compiling Kernel Module
echo
echo qiang
echo qiang yong
echo pedestrian
echo face person
strong@foreverstrong:~/Desktop/makefile_work$

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

4. $ 符号 (美元符号)

美元符号 $,扩展打开 makefile 中定义的变量。

5. $$ 符号

$$ 符号,扩展打开 makefile 中定义的 shell 变量。

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
                </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值