首页
学习
活动
专区
工具
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来管理项目的构建和部署流程。

16710

可移植的 Makefile 教程

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

1.4K10
  • GDB调试程序(二)

    gdb中,输入命令时,可以不用打全命令,只用打命令的前几个字符就可以了,当然,命令的前几个字符应该要标志着一个唯一的命令,在Linux下,你可以敲击两次TAB键来补齐命令的全称,如果有重复的,那么gdb...>     调用UNIX的shell来执行,环境变量SHELL中定义的UNIX的shell将会被用来执行,如果SHELL没有定义,那就使用...(在Windows中使用Command.com或cmd.exe) 还有一个gdb命令是make:     make make-args>      可以在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.9K40

    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现在快了很多,但在内存使用方面出现了相当大的倒退。特别要注意我们的输入循环如何在每次迭代中分配内存的!

    53030

    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。

    48420

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

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

    59950

    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的几个关键步骤,所有文件都在同一个目录下。

    8.1K31

    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.8K20

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

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

    4.3K20

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

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

    1.7K20

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

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

    2.8K20

    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.8K40

    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) 用到了map的map-key函数,用于遍历一个map...宽度的计算 b) 调用mixins/_grid.scss中的make-col-modifier方法,实现push、pull、offset的样式的生成: i.

    1.2K100
    领券