首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Makefile中创建多行回显块

在Makefile中创建多行回显块可以通过使用echo命令结合shell的 Here Document(也称为 heredoc)语法来实现。Here Document允许你将多行文本作为输入传递给命令,这在需要执行多行命令或者输出多行信息时非常有用。

以下是一个在Makefile中创建多行回显块的例子:

代码语言:txt
复制
.PHONY: echo_block

echo_block:
    @echo "Creating a multiline echo block:"
    @(
        echo "This is the first line."
        echo "This is the second line."
        echo "This is the third line."
    )

在这个例子中,.PHONY声明了echo_block是一个伪目标,这意味着它不是一个文件名,而是一个动作的名字。当你运行make echo_block时,它会执行echo_block目标下的命令。

@符号用于抑制命令的回显,即不会在终端中显示命令本身,只显示命令的输出。

括号()用于创建一个子shell环境,这样在括号内的命令会在一个新的shell进程中执行。这对于需要独立环境的命令序列很有用。

Here Document的语法通常是将文本块放在命令的标准输入中,但是在上面的例子中,我们使用了多行的echo命令来实现回显块的效果。

如果你想要使用Here Document的方式,可以这样写:

代码语言:txt
复制
.PHONY: echo_block

echo_block:
    @echo "Creating a multiline echo block:"
    @cat << EOF
This is the first line.
This is the second line.
This is the third line.
EOF

在这个例子中,cat << EOF开始了一个Here Document,EOF是结束标记。所有在EOF之间的文本都会被当作输入传递给cat命令,然后cat命令会将这些文本输出到标准输出。

这两种方法都可以在Makefile中创建多行回显块,你可以根据实际情况选择使用哪一种。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Linux自动化构建-makeMakefile

    背景 会不会写makefile,从⼀个侧⾯说明了⼀个⼈是否具备完成⼤型⼯程的能⼒ ⼀个⼯程中的源⽂件不计数,其按类型、功能、模块分别放在若⼲个⽬录中,makefile定义了⼀系列的规则来指定,哪些⽂件需要先编译...可⻅,makefile都成为了⼀种在⼯程⽅⾯的编译⽅法。 make是⼀条命令,makefile是⼀个⽂件,两个搭配使⽤,完成项⽬⾃动化构建。 2....拓展, touch不仅可以创建文件, 还可以用来修改文件的时间(mtime和ctime都会被修改)。...结论: .PHONY:让make忽略源⽂件和可执⾏⽬标⽂件的M时间对⽐ 执行make, 默认在命令行打印四条“hahaha”, 如果加上@则不会执行,关闭命令回显。 3....在找寻的过程中,如果出现错误,⽐如最后被依赖的⽂件找不到,那么make就会直接退出,并报错,⽽对于所定义的命令的错误,或是编译不成功,make根本不理。

    8110

    技术栈系列基础篇2-Makefile

    Makefile有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile中可以使用系统shell所提供的任何命令来完成想要的工作。...在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。文件指示。...其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令...变量中的变量在定义变量的值时,我们可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值。...在 Makefile 表达式中使用逗号和空格变量逗号和空格是 Makefile 表达式中的特殊符号参考文档:https://juejin.cn/post/6844904001872330760#heading

    59130

    【Linux课程学习】makeMakefile:Linux项目自动化构建工具

    一.make/Makefile的理解: 写成Makefile和makefile都是可以的。...所以对于程序员来说,make/Makefile是很重要的。 本人的理解: 让我来解释一下就是,我们在项目中会生成很多目标文件,而且会生成很多次。...如果我们在Makefile文件中(Makefile和makefile都可以,m可大写可小写),写好了 依赖关系和依赖方法,我们只需要写make+目标文件,就会直接生成我们需要的目标文件。...注:在依赖方法前面加上@,在使用make的时候,可以不让依赖方法回显。 例如: makefile文件如下: 不加@,就会回显依赖方法: 加上@,就不会回显依赖方法。...三 .更加规范便捷的用法写makefile文件: makefile文件中注释语句: 在语句前面加上#就可以注释语句 首先是变量的使用: 变量的定义方法: 新名字=原文件的名字 例如: target

    15710

    什么是makefile(3)

    Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。...在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。 4、文件指示。...其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令...如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“\#”。 最后,还值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。...这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。

    57620

    深入了解Linux —— make和makefile自动化构建工具

    什么是make/makefile 在之前写代码的过程中,我们都是对一个文件进行编译链接(gcc编译),但是如果一个项目中,源代码文件非常的多,我们总不能一个一个的进行编译链接,这也太麻烦了;所以现在就来学习...其实会不会写makefile文件,也侧面反映了其是否具备完成大型工程的能力 在一个工程中源代码文件,按照类型、功能、模块分别放到了若干个目录下,makefile定义一系列的规则来指定哪些文件需要先编译...创建变量 在makefile中也可以创建变量,和C语言中指针那样 BIN=code SRC=cpde.c OBJ=code.o CC=gcc RM=rm -f $(BIN):$(OBJ) gcc...$(LINK) $@ %.o:%.c @$(CC) $(COM) $< .PHONY:clean clean: $(RM) $(OBJ) $(BIN) 这样我们不知道它编译的进度了,我们就可以手动回显一些内容...语句前也要加@不让它回显,否则就会回显出来echo语句的内容。

    25710

    Makefile教程

    3.Makefile内容 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1.显式规则。显式规则说明了,如何生成一个或多个的目标文件。...其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令...如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“#”。 如果想多行注释的话,在注释行的结尾加行反斜线(\),下一行也被注释,这样就是可以实现多行注释了。...很显然,Makefile的这多行注释的方法没有像C/C++的多行注释方法/*注释*/方便。...因此,多行的shell需要在Makefile使用反斜杠”\”连接为一行。此时,shell脚本中的一条语句后需要添加分号分隔。

    4.1K53

    【Linux笔记】make工程管理工具(二)

    Makefile文件主要包含5个方面内容:显示规则、隐式规则、变量、文件指示、注释、实目标与伪目标等。 (1)显式规则。显式规则说明了,如何生成一个或多的的目标文件。...如果Makefile 文件里面没有显式给出文件的依赖关系的时候,make 就会根据文件的扩展名找到相应的隐含规则,然后按照隐含规则来更新目标。...在 Makefile 中我们要定义一系列的变量,变量一般都是字符串,这个有点像 C 语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。如: ?...其包括了三个部分,一个是在一个 Makefile 中引用另一个 Makefile,就像 C 语言中的 include 一样;另一个是指根据某些情况指定 Makefile 中的有效部分,就像 C 语言中的预编译...#if 一样;还有就是定义一个多行的命令。

    1.7K10

    芯片开发最常用的Makefile语法和功能

    在软件或者芯片的开发中,一般都会用到Makefile,它是一个文本文件,其中包含有关如何编译和链接程序的指令。..." 对于echo指令,如果只想看执行结果,而不想看回显的结果,可以使用@echo: hello: @echo "Hello, World" 如果command前面是空格,那么执行后会提示: ***...行首行尾的空格 在 Makefile 中,行尾的空格不会被去除,而行首的空格则会被忽略。...为了解决这个问题,你可以利用 $(nullstring) 这一特殊变量来确保正确创建含有单个空格的变量。 (nullstring) 是 Makefile 中的一个内置变量,其值为空字符串。...这是因为$i命令被make翻译成了shell中的i,而此时shell中的i的值就是one two three. 通配符 在Makefile中,*和%是都属于通配符。下面来看下他们的用法。

    19810

    【Linux操作系统】自动化编译make和Makefile

    通过make工具解释makefile文件中的命令,进行我们的项目编译。 2.为什么要有make/makefile?...makefile中的[tab键]不可省略,更不可用空格代替,[tab键]不等于4个空格也不等于8个空格,1个tab键实际是4个字符,只不过代表的是4个字符. 2.举一个例子 Makefile文件如下:....PHONY:clean clean: @rm -rf test @: 不带@在命令行执行...make的时候,会将所执行的命令回显到终端,带@则不回显 为什么在命令行执行的时候,执行第一组依赖关系和依赖方法的命令是make,执行第二组依赖关系和依赖方法的命令却是make clean?...li li 74 Jan 7 18:48 test.c 2.touch的两个作用 我们知道touch命令可以创建一个文件,还有一个作用就是对现有文件更新这三个的时间为系统时间.

    85940

    【Linux必备工具】自动化构建工具makefile的使用详解

    整个项目结构,该如何维护......在 Linux 环境中,我们需要更手动、细致地管理这些方面。为了解决这个问题,Linux 提供了自动化构建工具 Makefile。 1....Make和Makefile的使用 2.1 基本使用 创建Makefile: touch Makefile 编写Makefile: vim Makefile 编写要生成的可执行程序mybin和项目清理...在 Makefile 中,空行被视为分隔符,用于区分不同的规则或目标。 当 Make 工具解析 Makefile 文件时,它会忽略空行,并将第一行之后的非空行视为第一个规则或目标。...变量:可以使用变量来存储命令选项、编译器名称等信息,然后在规则中引用这些变量。...语法格式:VAR_NAME = value 取消回显:由于调用make命令,其会默认显示回显,因此一般通过使用 @ 加在命令前面取消回显 条件判断:可以使用条件判断(ifeq、ifdef 等)来根据不同的条件执行不同的命令

    22410

    Make

    以#开头的行为注释行,makefile中若用到#,可用#;同样,$应该用$$。在依赖列表后加上分号后,可直接跟上命令。...2、Makefile文件的构成: 一个完整的makefile文件由5个部分构成:显式规则、隐含规则、变量、文件指示和注释。 显式规则:一条显式规则指名了目标文件、目标文件的依赖关系、命令。...文件指示:包括三个部分,一个类似于c语言中的include语句,可以将另一个makefile文件包含进来;二是根据情况指定makefile中的有效部分,就像c语言中的预编译#if一样;三是定义一个多行的命令.../headers表示在../headers目录下搜索所有.h结尾的头文件。 变量: makefile中通常可定义变量,make在执行时会把变量名出现的地方用变量值代替。...=:在此之前没有给该变量赋值才会给该变量赋值 +=:追加变量值,与原变量值之间用空格隔开 预定义变量: makefile 中预定义了许多变量,在隐含规则中通常会用到这些变量: 宏名 初始值

    2K100

    【makefile】

    2、Makefile的基本内容 Makefile一般包括包含:显式规则、变量定义、隐含规则、文件指示和注释等五个内容。 (1)显式规则:显式规则说明如何生成一个或多个的目标文件。...(2)变量定义:在Makefile中可以定义一系列的变量,变量一般都是字符串,当Makefile被执行时,变量的值会被扩展到相应的引用位置上。...(4)文件指示:其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译...#if一样;还有就是定义一个多行的命令。...2.1 Makefile中的变量 (1)Makefile中定义的变量,与C/C++语言中的宏一样,代表一个文本字串,在Makefile被执行时候变量会自动地展开在所使用的地方。

    2K00

    Centos7.X 环境下安装 MySQL 5.7和8.0

    根据回显信息,输入MySQL数据库的初始密码。 mysql -uroot -p 6.执行命令修改MySQL数据库的初始密码。 密码必须时包含大小写英文字母、数字和特殊符号中的三类字符。...如果回显信息显示tengine,表示数据库创建成功 show databases; 9.输入exit,退出数据库。 exit Centos7.X环境安装MySQL8.0 1....根据回显信息,输入MySQL数据库的初始密码。 mysql -uroot -p 8. 执行命令修改MySQL数据库的初始密码。...密码必须同时包含大小写英文字母、数字和特殊符号中的三类字符。 注意每条完整的SQL命令结尾都有一个半角分号(;) 如果多行命令中间没有分号分隔这些命令将不会执行,直至遇到一个分号。...如果回显信息显示tengine,表示数据库创建成功 show databases; 11.输入exit,退出数据库。 exit

    36710

    深度解析Linux中的makeMakefile的使用方法

    make是一个命令 makefile是一个文件 2.看看make/Makefile—快速 我们现在创建了一个文件叫做test.c [kk@hcss-ecs-28de lesson8]$ touch test.c...kk@hcss-ecs-28de lesson8]$ 创建好这个Makefile之后我们使用vim打开这个文件 我们输入 mytest:test.c gcc test.c -o mytest 我们形成的目标可执行文件叫做...,那么我们就往下面去找了 然后我们又发现我们的test.o文件依赖于test.s文件 那么我们又往下面进行寻找的操作 test.s文件依赖于.i文件 .i文件依赖于我们的.c文件 我们的目录中是存在这个...我们先进行命令的执行操作 最后我们测试下我们能否将所有的.c文件都打印出来 使用make命令发现是可行的,确实是可以提取出我们的所有的.c文件 我们可以发现是两行,中间用空格间隔开了 这是因为gcc会将命令进行回显的操作...如果我们单纯的想要我们的这里不出现我们的回显内容,我们只是将我们的结果打印出来 我们可以在vim中进行编辑的操作 我们可以直接在我们要执行的命令的前面加上我们的@就可以不用进行呢回显的操作了 我们将当前文件里面的

    22810

    自动化构建-makeMakefile 【Linux基础开发工具】

    二、Makefile编译过程 Makefile文件中的命令有一定规范,一旦该文件编写好以后在Linux命令行中执行一条make命令即可自动编译整个工程。...因此,通过在Makefile中设置all作为默认目标规则,你可以简化构建过程,只需运行make命令即可执行整个编译过程,无需显式指定目标 三、变量 符号表示取变量的值,当变量名多于一个字符时,使用"(...cpp c预编译器的名称默认值为$(CC) -E CC = gcc 回显问题,Makefile中的命令都会被打印出来。如果不想打印命令部分 可以使用@去除回显 @echo "clean done!"...在一些大工程中,会把不同模块或不同功能的源文件放在不同的目录中,我们可以在每个目录中都写一个该目录的Makefile这有利于让我们的Makefile变的更加简洁,不至于把所有东西全部写在一个Makefile.../include 将该目录添加到头文件搜索路径中 在Makefile中则可以这样写: CFLAGS=-I/home/develop/include 然后在编译的时候,引用CFLAGS即可,如下 yourapp

    14110
    领券