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

用MAKEFLAGS覆盖包含空格的make变量

MAKEFLAGS是一个环境变量,用于指定make命令的选项和参数。它可以用于覆盖包含空格的make变量,使得make命令在构建过程中能够正确地解析这些变量。

在makefile中,如果某个变量的值包含空格,通常需要使用引号将其括起来,以确保make命令能够正确地解析这个变量。但是有时候,我们可能希望通过命令行的方式来覆盖这个包含空格的变量,而不希望手动添加引号。

这时候,我们可以使用MAKEFLAGS环境变量来实现。MAKEFLAGS的值是一串字符串,其中可以包含各种make命令的选项和参数。通过设置MAKEFLAGS环境变量,我们可以在命令行中直接传递包含空格的变量值,而无需手动添加引号。

例如,假设我们有一个包含空格的变量SOME_VAR,其在makefile中的定义如下:

代码语言:txt
复制
SOME_VAR := some value with spaces

如果我们使用make命令来构建项目,并希望覆盖SOME_VAR的值为"new value",我们可以通过设置MAKEFLAGS环境变量来实现:

代码语言:txt
复制
export MAKEFLAGS="SOME_VAR=new value"
make

这样,make命令在执行时就会将SOME_VAR的值设置为"new value"。

需要注意的是,使用MAKEFLAGS来覆盖包含空格的make变量时,需要确保字符串的正确性。特别是在传递包含空格的值时,需要使用引号将其括起来,以确保传递给make命令的参数被正确解析。

关于云计算和相关概念,我可以为你提供以下信息:

  1. 云计算概念:云计算是一种通过互联网提供服务的模式,它包括基于云的数据存储、应用程序和计算资源。用户可以通过互联网按需使用这些资源,无需在本地维护大量硬件设备。
  2. 云计算分类:根据部署方式,云计算可分为公有云、私有云和混合云。根据服务类型,云计算可分为基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
  3. 云计算优势:云计算提供了灵活的资源扩展和收缩能力,降低了硬件和维护成本,提高了可靠性和可用性,提供了更高的安全性和数据备份。
  4. 云计算应用场景:云计算广泛应用于企业的数据存储和处理、应用程序开发和测试、大规模数据分析、人工智能和机器学习等领域。

以下是一些腾讯云相关产品和产品介绍链接地址,可以帮助你进一步了解和应用云计算技术:

  • 腾讯云云服务器(ECS):提供弹性计算能力,支持多种操作系统和实例配置。了解更多信息,请访问:腾讯云云服务器
  • 腾讯云对象存储(COS):提供高可扩展性和可靠性的云存储服务,支持海量数据存储和访问。了解更多信息,请访问:腾讯云对象存储
  • 腾讯云人工智能平台(AI):提供强大的人工智能和机器学习服务,包括图像识别、语音识别、自然语言处理等功能。了解更多信息,请访问:腾讯云人工智能
  • 腾讯云物联网平台(IoT):提供全面的物联网解决方案,包括设备连接、数据管理和应用开发等功能。了解更多信息,请访问:腾讯云物联网
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

makefile从入门到放弃——博主吐血整理笔记

变量命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)。变量是区分英文字母大小写。...自动变量变量变量含义 – $* 不包含扩展名目标文件名称 – $+ 所有的依赖文件,以空格分开,并以出现后先后为序,可能包含重复依赖文件 – $< 第一个依赖文件名称 – $?...这两个变量分别是 SHELL 和 MAKEFLAGS,特别是 MAKEFLAGS 变量包含make 参数信息。...如果执行总控 Makefile 时,make 命令带有参数或者在上层 Makefile 中定义了这个变量,那么 MAKEFLAGS 变量值将会是 make 命令传递参数,并且会传递到下层 Makefile...如果我们不想传递 MAKEFLAGS 变量值,在 Makefile 中可以这样来写: subsystem: cd subdir && $(MAKE) MAKEFLAGS= 发布者:全栈程序员栈长

1.6K20

Linux 开发 | 学习 Makefile

上面这段规则,目标targets 是 edit, Makefile 中,targets 是文件名也可以是标号(比如clean),多个空格分开,可以使用通配符(shell)。...但是如果下层目录已经定义了该变量,那么下层默认使用是它自己定义变量值,除非上层 makefile 在调用下层 makefile 时给参数 -e,则会强行覆盖。...两个变量,一个是 SHELL,一个是 MAKEFLAGS,这两个变量不管你是否 export,其总是要传递到下层 Makefile 中。...:= 是覆盖之前值(类似C中 = ) 变量值决定于它在makefile中位置,而不是整个makefile展开后最终值。...$(strip string) # 例子 # 返回: a b c $(strip a b c ) 在判断变量是否为空情况下使用,可以避免多次赋值带来空格影响,提高鲁棒性 字符查找函数 判断字符中是否包含指定字符串

5.4K10

Make参数

-e –environment-overrides 指明环境变量覆盖makefile中定义变量值。 -f= –file= –makefile= 指定需要执行makefile。...-I –include-dir= 指定一个被包含makefile搜索目标。可以使用多个“-I”参数来指定多个目录。 -j [] –jobs[=] 指同时运行命令个数。...如果你只是想输出信息而不想执行makefile,你可以使用“make -qp”命令。如果你想查看执行makefile前预设变量和规则,你可以使用“make –p –f /dev/null”。...这个参数输出信息会包含着你makefile文件文件名和行号,所以,这个参数来调试你makefile会是很有用,特别是当你环境变量很复杂时候。...-S –no-keep-going –stop 取消“-k”选项作用。因为有些时候,make选项是从环境变量MAKEFLAGS”中继承下来

1.6K11

Make

命令之间可以插入多个空行,但每行必须有Tab键,如果一行过长,可以在行末输入一个\,反斜杠连接行都被看成一行来处理,反斜杠和新行之间不能有空格。.../headers目录下搜索所有.h结尾头文件。 变量: makefile中通常可定义变量make在执行时会把变量名出现地方变量值代替。...=:在此之前没有给该变量赋值才会给该变量赋值 +=:追加变量值,与原变量值之间空格隔开 预定义变量: makefile 中预定义了许多变量,在隐含规则中通常会用到这些变量: 宏名 初始值...说明 CC cc 默认使用编译器 CFLAGS -o 编译器使用选项 MAKE make make命令 MAKEFLAGSmake...$<:规则中第一个依赖文件名。 $>:当规则是一个静态库文件时,该变量表示静态库名。 $?:所有比目标文件新依赖文件列表,以空格分隔。

2K100

Go项目中Makefile简单使用

而在 rm 命令前面加了一个小减号意思就是,也许某些文件出现问题,但不要管,继续做后面的事。当然, clean 规则不要放在文件开头,不然,这就会变成make默认目标,相信谁也不愿意这样。...(注:这里显式“.PHONY : all” 不写的话一般情况也可以正确执行,这样make可通过隐式规则推导出, “all” 是一个伪目标,执行make不会生成“all”文件,而执行后面的多个目标。.../hello.txtrun: @echo $(i) @cat $(txt)执行:(3)扩展变量命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有 : 、 #...、 = 或是空字符(空格、回车等)。...变量是大小写敏感,“foo”、“Foo”和“FOO”是三个不同变量名。传统Makefile变量名是全大写命名方式,但我推荐使用大小写搭配变量名,如:MakeFlags

77600

全民K歌后台编译优化:从40分钟到30秒

192.168.1.4/5 192.168.1.5/5" export CCACHE_PREFIX=distcc export MAKEFLAGS="-j28" #设置ccachecache...2.warning: -jN forced in submake: disabling jobserver mode 这个原因是由于递归调用make进程里自己加了 –j选项,而不是直接使用MAKE变量...原因是递归调用makefile里面直接使用了make –f makefile这样形式,而没有使用MAKE变量,直接修改成$(MAKE) –f makefile就可以了。...深层原因其实就是MAKE变量会把make父进程MAKEFLAGS也带给make子进程,而直接使用make则不会传递这个变量 4.使用ccache–s观察发现有很多unsupported compiler...g++效果会比使用ccache g++然后再设置环境变量CCACHE_PREFIX=distcc 效果要差。

1.4K70

全民K歌后台编译优化:从40分钟到30秒

/5 192.168.1.5/5"export CCACHE_PREFIX=distccexport MAKEFLAGS="-j28" #设置ccachecache目录到tmpfsecho “cache_dir...2.warning: -jN forced in submake: disabling jobserver mode 这个原因是由于递归调用make进程里自己加了 –j选项,而不是直接使用MAKE变量...Add `+' to parent make rule.原因是递归调用makefile里面直接使用了make –f makefile这样形式,而没有使用MAKE变量,直接修改成$(MAKE) –f...深层原因其实就是MAKE变量会把make父进程MAKEFLAGS也带给make子进程,而直接使用make则不会传递这个变量 4.使用ccache–s观察发现有很多unsupported compiler...g++效果会比使用ccache g++然后再设置环境变量CCACHE_PREFIX=distcc 效果要差。

1.8K50

深度刨析makefile

在打印结果中,A 还是第一次赋值时值 += 追加赋值,在变量后面追加一个值,空格与前面的值分隔开 可以看到,A 和 B 值都会受影响 ② 变量使用 变量在使用时候要在前面加一个 $ 符号...,在生成目标时,一个个取出来去执行命令 $^ 所有依赖文件(无重复文件),空格分隔并且会自动去重 $?...如果包含多个文件,要使用空格分隔开。使用 include 引入 makefile 文件中,如果存在函数或者变量引用,它们会在包含 makefile 中展开。...其中MAKEFLAGS 变量包含make 命令参数信息。...如果上层 makefile 文件中定义了 MAKEFLAGS 变量,或者说在执行 make 命令时候使用了 make 参数,那么这些参数将会被 MAKEFLAGS 变量传递到下一层 makefile

9410

2023学习日志

azure学会了如何通过ssh私钥来连接云服务器通过了azure 学生认证leetcodecloud studio 需要使用ubuntu模板才能运行c++程序完成了leet code 第5、58-2...题,学会了:简单字符串替换也需要考虑到存储空间分配问题、对字符串取余来实现左旋转,makefilemake会按行顺序执行makefile中命令,因此下面两段命令不等价"cd ..../libpwd"当make执行命令出错时,可能会终止后续命令执行,而命令出错不一定代表出现了错误,可以使用在命令前加 - 来忽略该命令出错嵌套执行make可以在命令中进入下一层文件夹,执行make命令...,也可将变量传递给下层makefileSHELL 和MAKEFLAGS变量一定会传递到下层makefile定义命令包可以将命令序列定义为一个变量,在makefile中多次使用(相当于一个代码块)

8700

全网最牛Linux内核Makefile系统文件详解(纯文字代码)

include和可以一个或多个空格隔开。...这个变量值是其它Makefile,空格分隔。只是,它和include 不同是,从这个环境变中引入Makefile“目标”不会起作用,如果环境变量中定义文件发现错误,make也会不理。...需要注意是,有两个变量,一个是SHELL,一个是MAKEFLAGS,这两个变量不管你是否export,其总是要传递到下层Makefile中,特别是MAKEFILES变量,其中包含make 参数信息...变量命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、 “#”、“=”或是空字符(空格、回车等)。变量是大小写敏感,“foo”、“Foo”和“FOO”是三个不同变量名。...Makefile文件中,但是 如果Makefile中已定义了这个变量,或是这个变量make命令行带入,那么系统环境变量值将被覆盖

3.2K20

Linux makefile 教程 非常详细,且易懂

include和可以一个或多个空格隔开。...这个变量值是其它Makefile,空格分隔。只是,它和include不同是,从这个环境变中引入Makefile“目标”不会起作用,如果环境变量中定义文件发现错误,make也会不理。...需要注意是,有两个变量,一个是SHELL,一个是MAKEFLAGS,这两个变量不管你是否export,其总是要传递到下层Makefile中,特别是MAKEFILES变量,其中包含make参数信息,...Makefile文件中,但是如果Makefile中已定义了这个变量,或是这个变量make命令行带入,那么系统环境变量值将被覆盖。...是的,我们override是可以达到这样效果,可是override过于粗暴,它同时会把从命令行定义变量覆盖了,而我们只想重新定义环境传来,而不想重新定义命令行传来

4.3K20

Makefile经典教程(掌握这些足够)

include和可以一个或多个空格隔开。...这个变量值是其它Makefile,空格分隔。只是,它和include不同是,从这个环境变中引入Makefile“目标”不会起作用,如果环境变量中定义文件发现错误,make也会不理。...需要注意是,有两个变量,一个是SHELL,一个是MAKEFLAGS,这两个变量不管你是否export,其总是要传递到下层Makefile中,特别是MAKEFILES变量,其中包含make参数信息,...make开始运行时被载入到Makefile文件中,但是如果Makefile中已定义了这个变量,或是这个变量make命令行带入,那么系统环境变量值将被覆盖。...是的,我们override是可以达到这样效果,可是override过于粗 暴,它同时会把从命令行定义变量覆盖了,而我们只想重新定义环境传来,而不想重新定义命令行传来

2.7K20

技术栈系列基础篇2-Makefile

Makefile带来好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大提高了软件开发效率Makefile里有什么Makefile里包含了:显示规则、隐晦规则、...如果该变量已经赋值,则该赋值语句无效。追加赋值 ( += ) 原变量空格隔开方式追加一个新值。...这很像C语言#include,被包含文件会原模原样放在当前文件包含位置。...=:赋值结果会等到整个路径执行完再决定,后面的会覆盖前面的,延迟赋值。...在 Makefile 表达式中使用逗号和空格变量逗号和空格是 Makefile 表达式中特殊符号参考文档:https://juejin.cn/post/6844904001872330760#heading

57430

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

这意味着如果你需要创建一个包含单个空格变量,直接在变量赋值时使用空格可能会因行首空格被忽略而导致无法达到预期效果。...为了解决这个问题,你可以利用 $(nullstring) 这一特殊变量来确保正确创建含有单个空格变量。 (nullstring) 是 Makefile 中一个内置变量,其值为空字符串。...通过在变量赋值时结合使用 (nullstring) 和空格,可以确保空格被当作有效字符包含变量值内,而不被当作无意义行首空格处理掉。...当然也可以,需要使用override这个关键字,我们执行:make all option_one=123,即可覆盖。...平时Makefile来做一些芯片方面的像vcs仿真编译这些工作,上面将Makefile中知识就大概够用了。但Makefile还有一个经常使用场景,就是对C文件编译。

14410

Linux 下make命令与Makefile

-e, –environment-overrides 指明环境变量覆盖makefile中定义变量值。...这个参数输出信息会包含着你makefile文件文件名和行号,所以,这个参数来调试你makefile会是很有用,特别是当你环境变量很复杂时候。...-S, –no-keep-going, –stop 取消“-k”选项作用。因为有些时候,make选项是从环境变量MAKEFLAGS”中继承下来。...因为make“隐含规则”功能会自动为我们自动去推导这两个目标的依赖目标和生成命令。make会在自己“隐含规则”库中寻找可以规则,如果找到,那么就会使用。如果找不到,那么就会报错。...•< : 依赖目标中第一个目标名字。如果依赖目标是以模式(即%)定义,那么^ : 所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复,那个这个变量会去除重复依赖目标,只保留一份。

10.1K20
领券