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

如何在递归调用的make文件中取消定义一个make文件中分配给变量的几个标志?

在递归调用的make文件中取消定义一个make文件中分配给变量的几个标志,可以通过以下步骤实现:

  1. 首先,需要了解make文件中的变量定义和取消定义的语法。在make文件中,变量通常使用变量名 = 值的形式进行定义,例如CFLAGS = -Wall -O2。要取消定义一个已经定义的变量,可以使用undefine关键字,例如undefine CFLAGS
  2. 确定需要取消定义的变量名称。根据具体的make文件内容,确定需要取消定义的变量名称。
  3. 在递归调用的make文件中,找到需要取消定义的变量所在的位置。可以使用文本编辑器打开make文件,在递归调用的部分进行查找。
  4. 在找到的位置使用undefine关键字取消定义变量。将undefine 变量名添加到递归调用的make文件中,即可取消定义该变量。

下面是一个示例:

假设在递归调用的make文件中,有以下变量定义:

代码语言:txt
复制
CFLAGS = -Wall -O2
LDFLAGS = -lm

要取消定义这两个变量,可以在递归调用的make文件中添加以下内容:

代码语言:txt
复制
undefine CFLAGS
undefine LDFLAGS

这样就成功取消定义了这两个变量。

请注意,以上答案是基于一般情况下的make文件语法和常规做法,具体情况可能会有所不同。在实际应用中,建议参考具体的make文件语法和相关文档进行操作。

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

相关·内容

Linux: Makefile自动化基础指南

接下来将详细介绍如何在Makefile调用当前脚本目标,例如:make HOST=10.0.0.1 VERSION=v1.0 all。我们将通过具体示例和详细解释,帮助读者理解并掌握这一技巧。...all是一个伪目标,它依赖于build和deploy。 在Makefile调用目标 为了在Makefile调用目标,可以使用内置$(MAKE)变量。...这是一个特殊变量,确保使用当前Make命令及其所有参数。这在递归调用Makefile时特别有用。...复杂示例 以下是一个更复杂示例,展示了如何通过递归调用Makefile目标来处理不同构建和部署场景: makefile # 定义变量 HOST = localhost VERSION = 1.0.0...总结 本文详细介绍了如何在Makefile调用当前脚本目标,包含基础概念、环境变量使用以及复杂示例实现。通过学习这些内容,我们可以更灵活地使用Makefile来管理项目的构建和部署流程。

15110

可移植 Makefile 教程

如果你打算创建示例文件,并调用 make, 你会发现它实际上已经知道了它该如何构建目标文件。...$ make CC=clang CFLAGS='-O3 -march=native' 如果用户不想在每次调用时指定这些宏,他们可以(小心)使用 make -e 标志从环境覆盖宏定义。...举个例子,下面是一个推断规则,它描述了如果从一个 C 源文件构建一个 .o 目标文件。这个特殊规则是 make 预先定义,所以你不必自己去定义。...Recursive Makefiles 当你项目被分为几个子目录,你可能会试图在每个子目录下放一个 Makefile ,然后递归调用。 不要使用递归 Makefile。...它会在几个分离 make 实例之间打破依赖树,并且常常会产生脆弱构建。使用递归 Makefile 毫无益处。好选择是在项目的根目录放置一个 Makefile, 在那里进行调用

1.3K10
  • GDB调试程序(二)

    gdb,输入命令时,可以不用打全命令,只用打命令几个字符就可以了,当然,命令几个字符应该要标志一个唯一命令,在Linux下,你可以敲击两次TAB键来补齐命令全称,如果有重复,那么gdb...>     调用UNIXshell来执行,环境变量SHELL定义UNIXshell将会被用来执行,如果SHELL没有定义,那就使用...(在Windows中使用Command.com或cmd.exe) 还有一个gdb命令是make:     make       可以在gdb执行make命令来重新build自己程序...在GDB运行程序 ———————— 当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录搜索文件。...(throw为关键字)         2、catch 一个C++捕捉到异常。(catch为关键字)         3、exec 调用系统调用exec时。

    1K20

    芯片设计Makefile简明教程

    /simv -xxx 这个例子,sim并不是要生成结果文件,而只是我们给操作起一个名字。由于伪目标总是不存在,所以命令也一定会重新执行,即使simv没有修改。.../simv -xxx 这样,我们在terminal里就可以用make sim来调用仿真命令。 默认目标 如果我们只是敲make(后面不跟目标),那么将调用Makefile里一个目标。...run simulation" makefile内定义变量 当源文件比较多,且常需要增减,我们可以把依赖定义一个变量,放成文件开头,如下。...在Makefile中有几个特殊变量$@表示目标,$^表示依赖。...POST=1 DUMP=1 makefile大杀器:目录递归一个重要功能是目录递归,目录递归一个典型应用:make clean。

    1.9K50

    【手把手系列】:芯片设计Makefile简明教程

    伪目标 有时候目标并不是真实要生成文件,比如我们要用Makefile调用simv来仿真,并不存在一个叫做sim目标文件,这种情况我们称之为伪目标PHONY。.../simv -xxx 这个例子,sim并不是要生成结果文件,而只是我们给操作起一个名字。由于伪目标总是不存在,所以命令也一定会重新执行,即使simv没有修改。...run simulation" makefile内定义变量 当源文件比较多,且常需要增减,我们可以把依赖定义一个变量,放成文件开头,如下。...在Makefile中有几个特殊变量@表示目标,^表示依赖。...POST=1 DUMP=1 makefile大杀器:目录递归一个重要功能是目录递归,目录递归一个典型应用:make clean。

    1.8K40

    makefile基础和工作常用点补充

    (6) 如果不在 make 命令行显式指定目标规则名,则默认使用第一个有效规则。...(7) 每条命令都在一个独立 shell 环境执行,希望在同一 shell 执行,可以用 ";" 将命令写在一行,也可用\ 换行。...f fileName  -n 显示待执行命令,但不执行 Makefile组成 显式规则:生成、依赖文件,生成命令 隐含规则:make支持自动推导功能, make –p 打印 变量定义:类C..."="   递归展开变量,仅在目标展开时才会替换,也就是说它可以引用在后面定义变量。  ":=" 直接展开变量,在定义时就直接展开,它无法后置引用。 "?...vpath %.c  # 取消该模式 vpath  # 取消所有模式 VPATH 和 vpath 定义搜索路径仅对 makefile 规则有效,对 gcc/g++ 命令行无效,比如不能用它定义命令行头文件搜索路径参数

    1.4K00

    Linux 下make命令与Makefile

    利用make工具,我们可以将大型开发项目分解成为多个更易于管理模块,一个工程文件不计数,其按类型、功能、模块分别放在若干个目录,makefile定义了一系列规则来指定,哪些文件需要先编译,...(递归进行,所包含文件可能包含其他文件) 4 删除所有注释// /* */ 5 添加行号和文件名标识,:#2 hello_kitty.c 2 ,用于编译时编译器产生调试信息和编译时产生错误和警告时能显示行号...当然,你也可以利用make-R或–no-builtin-variables 参数来取消你所定义变量对隐含规则作用。...: %.o : %.s 同样,你也可以重新定义一个全新隐含规则,其在隐含规则位置取决于你在哪里写下这个规则。 隐含规则搜索算法 比如我们有一个目标叫T。下面是搜索目标T规则算法。...(同第5步) (c) 测试所有的依赖文件是否存在或是理当存在。 (d) 对于不存在依赖文件递归调用这个算法查找他是否可以被隐含规则找到。

    10.2K20

    ​70行Go代码打败C

    C(https://chrispenner.ca/posts/wc),在互联网上引起了相当大争议,从那以后,尝试用各种不同编程语言来挑战历史悠久C语言版wc命令(译者注:用于统计一个文件行数、...虽然wc命令被设计为可以从标准输入设备(stdin)读取、处理非ASCII文本编码和解析命令行标志(wc命令帮助可以参考这里),但我们在这里不会这样做。...在我测试,导入fmt库(注:Go语言格式化库)会导致可执行文件大小增加大约400 KB!...从上表可以看出,我们wc现在快了很多,但在内存使用方面出现了相当大倒退。特别要注意我们输入循环如何在每次迭代中分配内存!...使用Mutex并行化(wc-mutex) 在本节,我们将允许每个worker读取文件,并使用sync.Mutex互斥锁确保读取不会同时发生。

    56540

    教你如何用70 行 Go 代码打败 C!

    尝试用各种不同编程语言来挑战历史悠久C语言版wc命令(译者注:用于统计一个文件行数、字数、字节数或字符数程序命令)就变成了一种大家趋之若鹜游戏,可以用来挑战编程语言列表如下: Ada C...虽然wc命令被设计为可以从标准输入设备(stdin)读取、处理非ASCII文本编码和解析命令行标志(wc命令帮助可以参考这里),但我们在这里不会这样做。...在我测试,导入fmt库(注:Go语言格式化库)会导致可执行文件大小增加大约400 KB!...幸运是,要处理一个chunk,我们只需要知道前一个chunk最后一个字符是否是空白。...从上表可以看出,我们wc现在快了很多,但在内存使用方面出现了相当大倒退。特别要注意我们输入循环如何在每次迭代中分配内存

    52630

    Makefile基本用法

    使用默认编译简化 无需详细说明编译单个C源文件方法,因为make可以解决这些问题。main.o,kdb.o等。...当一个先决条件名称格式为'-lname'时,make通过搜索文件来专门处理它libname.so文件 如果找不到,则在当前目录libname.a文件 在通过匹配vpath搜索路径和vpath搜索路径指定目录...CFLAGS属于C编译标志信息。 ? $<表示第一个先决条件(如下,只有foo.c) ? 递归for循环 ? 一些等价 ? 使用了subst语法去掉了$@output信息。 ?....ONESHELL .ONESHELL定义后,在构建一个目标时,方法所有行都将被赋予shell一次调用,而不是单独调用每一行。...只写export不带参数则导出所有变量。 unexport为禁止导出。 ? 变量定义与清除 如下定义,功能上基本等价。但是前者唤醒了shell两次,而后者因为在同一行,则只唤醒一次。

    2.5K40

    Linux基础操作

    ] mkdir 创建一个目录 选项: -P:可递归创建目录 rmdir 删除一个空目录 选项:-p:如果删除目录父目录也是空目录,也把该父目录也删去。...grep 在文件查找字符串,并打印出来。 zip/unzip 打包,压缩,解压缩。 -r:递归式压缩,把目录以及子目录一并处理。 tar 打包,压缩,解压。...d 断点编号:取消断点 r:运行,遇到断点停止。 c:运行到下一个断点处停下来。 n:逐过程 s:逐语句。 p 变量名:打印变量信息 bt:调用堆栈。 finish:把当前函数运行结束停下来。...display 变量:长显示(一直显示) undisplay 序号:取消长显示 until 行号:跳转到指定行 disable/enable 断点序号:使断点失效/生效 make/makefile makefile...自动化进行程序编译链接,make会在当前文件查找makefile或者Makefile。

    48320

    深入掌握 Makefile 与 Make 工具:高效管理自动化编译核心原理和最佳实践

    make 命令通过读取一个名为 Makefile 或 makefile 文件,根据其中定义规则执行各种任务(编译、链接等),从而简化和自动化项目的构建过程。...变量:makefile 定义变量,允许复用和动态设置。...常用命令 make:使用默认目标(Makefile 一个定义目标)进行构建。 make clean:调用 clean 目标,用于删除编译生成文件。...$< 是 make 自动化变量,代表第一个依赖文件,在这里是 .c 文件。 $@ 是目标文件(在这里是 .o 文件名称。 这样,不需要为每个 .c 文件写一条规则。...Makefile 配置 有时在 makefile 配置也会影响重新编译条件,例如使用变量、条件语句和模式规则等。 总结 需要重新编译:当源文件、依赖文件发生变化,或者手动强制重新编译时。

    23750

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

    但这种形式也有不好地方,那就是递归定义: CFLAGS = $(CFLAGS) -O 或: A = (B)B = (A) 这会让make陷入无限变量展开过程中去,当然,我们make是有能力检测这样定义...因为你不会知道这两个函数会被调用多少次。 为了避免上面的这种方法,我们可以使用make另一种用变量定义变量方法。...当make嵌套调用时(参见前面的“嵌套调用”章节),上层Makefile定义变量会以系统环境变量方式传递到下层Makefile。当然,默认情况下,只有通过命令行设置变量会被传递。...当然,你也可以利用make“-R”或“–no–builtin-variables”参数来取消你所定义变量对隐含规则作用。...在“隐含规则链”,禁止同一个目标出现两次或两次以上,这样一来,就可防止在make自动推导时出现无限递归情况。 Make会优化一些特殊隐含规则,而不生成中间文件

    4.3K20

    Linux下automake工具使用(自动构建Makefile文件)

    AC_INIT 测试程序 测试函数库 测试头文件 测试类型定义 测试结构 测试编译器特性 测试库函数 测试系统调用 AC_OUTPUT ​ 关键字解释: AC_INIT()中分别的是: 软件包名字...格式详解 6.1 Makefile.am可用全局变量 变量 含义 示例 INCLUDES 链接所需要文件 LDADD 链接所需要文件 LDFLAGS 链接所需要文件选项标志 EXTRA_DIST...在Makefile.am尽量使用相对路径,系统预定义了两个基本路径: 路径变量 含义 $(top_srcdir) 工程最顶层目录,用于引用源程序 $(top_builddir) 定义了生成目标文件最上层目录...:example_SCRIPTS,如果用这样的话,需要我们自己定义安装目录下example目录 DATA。数据文件,不能执行。...) 7.1 创建待编译源码(模拟真实项目环境) 在第一章里简单介绍了使用automake自动产生makefile几个关键步骤,所有文件都在同一个目录下。

    7.4K31

    qmake手册(Qt5.9.3)

    注意:必须在调用make工具时设置变量,而不是在.pro文件。...Makefile: make 在两种模式下安装 build_all选项还可确保在调用安装规则时安装两个版本目标: make install 可以根据目标平台自定义构建目标的名称。...CONFIG 自定义构建目标的特定配置选项。可以设置递归来表示应该在Makefile创建规则来调用子目标特定Makefile相关目标。该成员默认为每个子目标创建一个条目。...depends 自定义构建目标所依赖现有构建目标。 recurse 在Makefile创建规则以调用子目标特定Makefile时,指定应使用哪些子目标。该成员仅在CONFIG设置递归时使用。...这个成员添加类似$(MAKE) -f Makefile。subtarget。该成员仅在CONFIG设置递归时使用。 target 自定义构建目标的名称。

    5.7K20

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

    一个工程文件不计其数,并且按类型、功能、模块分别放在若干个目录,makefile定义了一系列规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂功能操作...文件: $ make #默认生成第一个文件 $ make '目标名'#选择性编译 当工程文件名和makefile目标重名时,就会有伪目标。...变量定义两种方式 - 递归展开方式 VAR=var - 简单方式 VAR: =var 一般使用递归展开方式进行变量定义 变量使用 示例1: dir :=/foo/bar...makefile文件特殊变量VPATH就是完成这么一个功能,如果没有指明这个变量make只会在当前目录中去寻找依赖文件和目标文件。...我们也可以在 Makefile 为这个变量一个值,当然重新赋值后这个变量将不再代表 make 工作目录。

    1.7K20

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

    这个示例来源于GNUmake使用手册,在这个示例,我们工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。...但这种形式也有不好地方 ,那就是递归定义: CFLAGS = $(CFLAGS) -O 或: A = $(B) B = $(A) 这会让make陷入无限变量展开过程中去...因为你不会知道这两个函数会被调用多少次。 为了避免上面的这种方法,我们可以使用make另一种用变量定义变量方法。...当make嵌套调用时(参见前面的“嵌套调用”章节),上层Makefile定义变量会以系统环境变量方式传递到下层Makefile。当然,默认情况下,只有通过命令行设置变量会被传递。...在“隐含规则链”,禁止同一个目标出现两次或两次以上,这样一来,就可防止在make自动推导时出现无限递归情况。 Make 会优化一些特殊隐含规则,而不生成中间文件

    2.7K20

    Linux内核跟踪:ftrace hook入门手册(上)

    虽然不设置它们也可以正常构建得到.ko文件,但这可能产生一些预期之外问题(例如,一个定义/不设置module_exit函数内核模块,可能无法被正常卸载)。...接下来我们切换到项目目录内,执行构建: make 正常运行会得到如下结果: 图5:构建命令输出 此时应该会产生一个.ko文件,就是我们刚刚制作内核模块可执行文件了: 图6:构建完毕内核模块...,否则make命令会报错而无法生成.ko模块; 3、如果希望将函数声明和定义分别放置在.h文件和.c文件(就像上面例子Add函数一样),那么该函数应当不加static修饰,否则它们无法被编译器正确链接起来...为此,经典方案自行实现了两套防递归方法,但它们看上去都不是非常完善: 第一种方法通过within_module检查直接调用方是否位于当前模块,这对于涉及多个模块调用(hook子程位于模块A,A调用了模块...标志; 而从5.11rc1开始,默认不会添加防递归检查,除非ftrace_ops.flags设置了FTRACE_OPS_FL_RECURSION标志; 因此,这实际上是两个功能相反标志选项。

    2.7K40

    bootstrap深入理解之格子布局

    如果只使用格子系统,可以只编码bootstrap-grid.scss文件 三、实现原理 1、 按百分比布局,主要思考问题如何在不同设备上平均分配宽度,bootstrap只是用了简单百分比,在任何尺寸设备下都是使用相同百分比...四、源码分析: 1、_grid.scss:格子系统生成主类,引用了mixins/_grid.scss、mixins/_grid-framework.scss、variables.scss类变量及相关方法...然后:定义row(行): 调用make-row(mixins/_grids.scss)实现清除浮动、左右外边距定义,在4.0,如果开启了flex布局支持,就设定容器display为flex...、外边距宽度、所支持几种尺寸     b) make-grid-columns引用了mixins/_grid.scss许多方法:     a) 用到了mapmap-key函数,用于遍历一个map...宽度计算 b) 调用mixins/_grid.scssmake-col-modifier方法,实现push、pull、offset样式生成: i.

    1.2K100
    领券