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

make vs $(MAKE) for submake在makefile中-有什么不同?

在Makefile中,make和$(MAKE)都是用于执行子Makefile的命令。它们之间的区别在于变量的展开方式。

  1. make:make是一个命令,用于执行子Makefile。当使用make命令时,它会启动一个新的make进程来执行子Makefile。这意味着子Makefile中的变量将会被重新展开和计算。
  2. $(MAKE):$(MAKE)是一个内置变量,它保存了当前make的命令名称。当使用$(MAKE)变量时,它会展开为当前make的命令名称,并将其作为参数传递给子Makefile。这样子Makefile中的变量将使用相同的值,而不会重新展开和计算。

因此,使用make命令执行子Makefile时,子Makefile中的变量可能会根据当前环境重新计算,而使用$(MAKE)变量执行子Makefile时,子Makefile中的变量将使用相同的值。

在实际应用中,如果子Makefile中的变量不依赖于当前环境,或者需要确保子Makefile中的变量使用相同的值,可以使用$(MAKE)变量。否则,可以使用make命令来重新计算子Makefile中的变量。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供弹性计算能力,满足各种业务需求。产品介绍链接
  • 云数据库 MySQL 版(CDB):提供高性能、高可靠的云数据库服务。产品介绍链接
  • 云存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍链接
  • 人工智能平台(AI Lab):提供丰富的人工智能开发工具和服务,帮助开发者快速构建智能应用。产品介绍链接
  • 物联网开发平台(IoT Explorer):提供全面的物联网解决方案,帮助开发者连接和管理物联网设备。产品介绍链接
  • 腾讯云区块链服务(Tencent Blockchain):提供高性能、高可靠的区块链服务,支持多种区块链应用场景。产品介绍链接
  • 腾讯云元宇宙服务(Tencent Metaverse):提供全面的元宇宙解决方案,帮助开发者构建虚拟现实和增强现实应用。产品介绍链接

请注意,以上链接仅为示例,具体产品选择应根据实际需求进行评估和选择。

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

相关·内容

make makefile cmake qmake都是什么什么区别?

其基本语法是: 目标+依赖+命令,只有目标文件不存在,或目标比依赖的文件更旧,命令才会被执行。由此可见,Makefilemake可适用于任意工作,不限于编程。比如,可以用来管理latex。...Makefile+make可理解为类unix环境下的项目管理工具,但它太基础了,抽象程度不高,而且windows下不太友好(针对visual studio用户),于是就有了跨平台项目管理工具cmake...5.makefile什么?简单的说就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,make工具就根据makefile的命令进行编译和链接的。...11.当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形 12.接着是qmake,qmake是什么,先说一下Qt这个东西。...这样qmake和cmake什么区别?

2.1K10

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

2.warning: -jN forced in submake: disabling jobserver mode 这个原因是由于递归调用的make进程里自己加了 –j选项,而不是直接使用MAKE变量...,比如设置了QMAKE=make –j 10, 子进程里直接使用$(QMAKE) –f makefile来调用就会出现此问题,解决方法也很简单,去掉QMAKE变量,直接使用$(MAKE) –f makefile...目前想到的解决办法三种: a. 使用make clean ;make all而不是make clean all,但是cis上好像不支持 b....设置一个目标为clean_all,makefile把这个目标分成两个步骤,目前使用这个方案 ?...ccache的情况下编译:30秒左右 ? 超越了之前定的1分钟之内全部编译完的目标! 后续优化 1. 工程内同名文件清理 2.

1.7K50

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

2.warning: -jN forced in submake: disabling jobserver mode 这个原因是由于递归调用的make进程里自己加了 –j选项,而不是直接使用MAKE变量...,比如设置了QMAKE=make –j 10, 子进程里直接使用$(QMAKE) –f makefile来调用就会出现此问题,解决方法也很简单,去掉QMAKE变量,直接使用$(MAKE) –f makefile...原因是递归调用的makefile里面直接使用了make –f makefile这样的形式,而没有使用MAKE变量,直接修改成$(MAKE) –f makefile就可以了。...目前想到的解决办法三种: a. 使用make clean ;make all而不是make clean all,但是cis上好像不支持 b....设置一个目标为clean_all,makefile把这个目标分成两个步骤,目前使用这个方案 ?

1.4K70

gdb和makefile的讲解

Linux调试器-gdb使用 gdb可以用于Linux环境下的程序的调试,就例如vs环境下的打断点,然后逐步分析语句等 1 gdb的背景 程序的发布方式两种,debug模式和release模式 我们使用...vs21时大家都清楚,release版本是不能被调试的,而debug版本就是用于调试的程序版本 那么我们Linux系统默认生成的可执行程序是什么模式呢?.../Makefile 1 make/makefile的背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程的源文件不计数,其按类型、功能、模块分别放在若干个目录,...可见,makefile都成为了一种工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。...默认的方式下,也就是我们只输入make命令: 1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2.

7010

【Linux】--- Linux编译器-gccg++、调试器-gdb、项目自动化构建工具-makeMakefile 使用

编译(生成汇编): 在这个阶段,gcc 首先要检查代码的规范性、是否语法错误等,以确定代码的实际要做的工作,检查无误后,gcc把c语言代码翻译成汇编语言。...可见,makefile都成为了一种工程方面的编译方法; make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。...3.2 原理 make是如何工作的,默认的方式下,也就是我们只输入make命令。那么, make会在当前目录下找名字叫"Makefile"或"makefile"的文件。...2. make自动推导的功能,所以 隐晦规则可以让我们比较粗糙地简略地书写makefile ,比如源文件与目标文件之间的时间关系判断之类。3....makefile的伪对象表示对象名称并不代表真正的文件名,与实际存在的同名文件没有相互关系,因此伪对象不管同名目标文件是否存在都会执行对应的生成指令。伪对象的作用两个,1.

13720

Linux项目自动化构建工具-makeMakefile

可见, makefile 都成为了一 种工程方面的编译方法。 make 是一条命令, makefile 是一个文件,两个搭配使用,完成项目自动化构建。...如果在vs写程序的时候,100个源文件,那么我们是要把每个.c文件或者.cpp文件经过预处理,编译,汇编编译成.o文件 ,然后再把这些.o文件链接起来,生成1个或者多个可执行程序。...那么这些事情是编译器帮我们做的,那么linux中就需要我们手动去做了,linux自动化构建项目的工具就是make/makefile。 2.理解 那么make什么呢?...makefile又是什么呢? make是一个命令,makefile是一个文件。make是系统为我们提供的一个命令,而makefile是需要用户在当前工作目录下自己写的一个文件。...找寻的过程,如果出现错误,比如最后被依赖的文件找不到,那么 make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make 根本不理。

8410

C_C++_静态库_动态库的制作和使用

什么要写这个教程? 这个应用模型是我们开发过程中经常使用的,例如:作为一名资深程序员,你需要为公司的应用开发工程师提供一个轮子:modbus通讯库。...当然,也顺带着介绍一些make+Makefile, cmake, VS2017等相关知识。...from=search&seid=2569462564675483069 教程包含的内容 1....Linux平台下 动态库、静态库的编译和使用; 动态库和静态库的间接使用; 使用make + Makefile 来编译/构建动态库、静态库、应用程序; 使用cmake来编译/构建动态库、静态库、应用程序...Linxu平台 分别演示make + Makefile 和 cmake 来完成下面的操作: (1)libA输出动态库,libB输出动态库,编译可执行程序。

96110

vscode基于Linux和Windows下cc++的多文件编译与连接

前些天配置Linux上的vscode的时候,突然发现有网友tasks.json的command是make,突然来了兴致,想到既然用make,那我只要一个makefile,然后Ctrl+Shift+...但最终make命令执行失败,说是找不到target什么的(忘了),但我不甘心,于是又是百度又是google,搜索了差不多两个小时都没有找到有效的解决方法。...看到shell命令也可以的时候感觉要吐血了,感觉我浪费了宝贵的两个小时,明明用shell脚本就变得很简单了,多简单?看图 tasks.json ? .make.sh ?...简单吧,就是通过vscode将文件的目录${fileDirName}作为参数传给.make.sh,脚本里进入这个目录后,再make一下就好了。...i bash --login -i -c "make -f %_makefile%" ::运行编译脚本MakeFile ::make 最后顺便贴一下我的makefile和launch.json吧 Linux

2.8K70

聊一聊鸿蒙的构建系统

构建系统简介 这么些年的开发生涯,接触过很多个软件构建系统。为什么开发软件需要构建系统呢? 回想一下我们刚开始学习编程,通常代码量比较小,编写的源代码只有几个文件。...但是,GNU Makefile 的编写极其繁琐和乏味,也容易出错。而且涉及到多平台开发时,GNU Make 也有些力不从心。...AutoTool 工具通常只局限于类 Linux 系统中使用,CMake 更进一步,不仅可以生成 GNU Makefile,还可以生成 VS 工程文件,解决跨平台软件开发的问题。...接着 chromium 项目又整出了一个 Ninja 构建系统,但这个 Ninja 并不是用来取代 GYP,而是取代 GNU make 的,据谷歌官方的说法是速度了好几倍的提升。...软件开发界一句名言:不要重复造轮子,我们并不是什么东西都需要从头开发。

1.4K20

Mac VS CODE 无法 ssh-remote

更新依然无法连接.绕过密码验证第二次尝试, 查看ssh-Remote连接时使用的命令.VS Code的Terminal可以得到连接中使用的命令ssh -v -D 51465 -o ConnectTimeout...疑点ssh的参数到底调整了什么Terminal中所有的参数都是可以正常使用的, 但是VS Code除了-v以外的所有参数都会报错....可能是由于-v是查看详细信息, 所以对连接过程无影响.使用公钥连接而非密码之后, 理应绕过了/dev/tty权限的问题, 但-D/-o的命令只要添加, 就会报错.为什么成功了一次最大的疑惑就是为什么...VS Code失败的情况下为什么VS Code Insider成功了第一次, 但是之后我删除所有插件, 更换旧版本乃至删除服务器.vscode文件夹都毫无反应.实在是分不清啊...automake是什么...GNU Automake是一种编程工具,可以产生供make程序使用的Makefile,用来编译程序。

59820

【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )

NDK 项目 一、Visual Studio 创建 Makefile 项目 ---- Visual Studio 2019 欢迎界面 , 选择 " 创建新项目 " ; " 创建新项目 "...: make -f Makefile.mk 清除命令行 : make -f Makefile.mk clean 重新生成命令行 : make -f Makefile.mk -B 如果 Windows...make 命令 ; 这是编译 NDK 项目的通用 Makefile 配置 : 使用前只需要修改 NDK 和 NDK_ROOT 的自己的 NDK 即可 ; NDK = D:/001_Develop/...int argc, char** argv) { printf("Hello World"); return 0; } 六、编译 NDK 项目 ---- 右键点击 " 解决方案资源管理器 " , 弹出的菜单..., 选择 " 仅用于项目(J) -> 仅生成 VS_NDK_Makefile(B) " 选项 ; 编译结果 :

53730

Linux环境基础开发工具

gcc test.c」 即可在vim编译.c文件 vim 的分屏 「: vs + 文件名」: 如在 test.c 打开或创建一个文件「: vs liren.c 」 「ctrl + w」...可见,makefile都成为了一种工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。...make自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写makefile,比如源文件与目标文件之间的时间关系判断之类 makefile可以定义变量,当makefile被执行时,其中的变量都会被扩展到相应的引用位置上...make执行makefile规则,根据语法规则,会分析目标对象与依赖对象的时间信息,判断是否在上一次生成后,源文件发生了修改,若发生了修改才需要重新生成。...一个问题:为什么如果源文件没有修改,make 后不会产生新的可执行文件呢?怎么证明?

1.8K50

Ubuntu下安装软件的三种方式

Linux下写代码,一个非常好用的编辑器“VS Code”。它也可以通过这样的方式安装。 源码安装 上面的在线安装和deb安装包安装,都是已经生成好的二进制文件。...也可以顺手终端下输入“arm-linux-gcc -v”。让它提示完整的名称。我的交叉编译链如下。 ? 修改Makefile文件。...然后,我们先执行make clean,清理以前生成的文件。接着执行make命令。可以看到make成功。然后将boa可执行文件移植到开发板,这就完成了编译工作。当然,作为服务器而言,你还需要配置它。...如果你是x86或者amd处理器的Linux上,你就不需要修改makefile,直接make即可,然后修改错误。继续make。直到成功为止。显然,由于多种平台的存在。源码安装就显得非常必要。...它们的安装方式也是以上三种,只不过命令不同

26K52

【Linux】常用工具(下)

Linux常用工具 一、Linux 项目自动化构建工具 - make/Makefile 一个工程的源文件不计数,其按类型、功能、模块分别放在若干个目录makefile 定义了一系列的规则来指定,哪些文件需要先编译... windows 操作系统,比如 vs2019 这款编译器,了图形化界面,我们可以直接一键生成解决方案,即编译;但在 Linux 系统,需要我们使用 gcc 或 g++ 手动进行编译工作,当我们需要编译的文件多起来时...依赖关系和依赖方法 我们先简单看一看 makeMakefile 的使用;我们先 touch 一个 Makefile 文件和一个普通文件: 我们 test.c 文件随便写一些代码: 随后我们进入...make/Makefile 具有依赖性的推导能力,我们 Makefile 文件中有如下代码,其实就是程序的编译过程: 编译之后如下: 可以看出就是我们编译程序的过程,我们执行观察一下: 但是并不推荐用这种方法编译... vs ,我们可以使用 F10 和 F11 进行逐过程和逐语句的调试,gdb 我们也可以使用这样的操作,其中逐过程是 n,即 vs 的 F10;逐语句是 s,即 vs 的 F11.

15310

Redis 概述安装

在此基础上,Redis支持各种不同方式的排序。 与memcached一样,为了保证效率,数据都是缓存在内存。 区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。...README.md runtest runtest-moduleapi sentinel.conf tests utils redis-6.2.1目录下再次执行make命令...[root@master redis-6.2.1]# make cd src && make all make[1]: 进入目录“/opt/redis/redis-6.2.1/src” CC Makefile.dep.../redis-6.2.1/src” CC Makefile.dep Hint: It's a good idea to run 'make test' ;) INSTALL install...得到就绪状态后进行真正的操作可以同一个线程里执行,也可以启动线程执行(比如使用线程池) 串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis) (与Memcache三点不同

24330

WebRTC的编译工具 gyp 、gn 与 ninja

如在 Mac 下产生 XCode 的工程文件,Windows下生成 VS 工程文件,以及 Ninja 文件。 什么是 gn GN(Generate Ninja),它是 GYP 的替代工具。...什么是 cmake 相对于 gyp 和 gn, 大家可能对 cmake 更熟悉点。它也是一种可以产生跨平台工程文件和 makefile文件的编译工具集。...什么是 scons scons 与 cmake是一类工具,可以产生跨平台的工程文件以及makefile文件。...什么是 ninja ninja,它与 make 类似,也是一种编译控制工具,它可以根据用户的需求进行编译。...小结 从上面的介绍大家可以了解到, cmake/scons/gyp/gn 这几个工具是同一类的,可以产生跨平台的工程文件,以及编译控制文件(如 makefile 或 .ninja 文件);而 make

2.5K21

CMake vs Make对比

你应该在终端上运行“cmake”和“make”命令。很多人只是盲目地按照指示,不是真的关心为什么我们需要以某种方式做事情。这个整个构建过程是什么,为什么它这样构造?CMake和Make之间什么区别?...事实证明,它们是完全不同的。了解他们之间的区别是非常重要的,以确保您不会陷入困境。分析之前,先看看它们是什么。...“Make”是从程序的源文件控制程序的可执行文件和其他非源文件的生成工具。 “Make”工具需要知道如何构建程序。它了解如何从名为“makefile”的文件构建程序。...每个项目都有自己的规则和细微差别,每当你一个新的合作者,它都会变得非常痛苦。这就是我们有这个makefile的原因。构建过程的细节实际上记录在您提供的makefile。...什么不同? 如果您使用Makefile,即在命令行中键入“make”,则构建过程一个步骤。

3.7K31

【Linux】自动化构建工具makeMakefile和git介绍

上方直接使用make,为什么会执行第一对依赖关系呢?因为如果make后面什么都不跟,就会默认执行第一对依赖关系。make是从上往下执行的。...依赖关系实例 makefile里面,注释是用 #。 make指令原本只会执行第一对依赖关系,但是上面例子却把后面的几对依赖关系都执行了。...原理: make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 如果找到,它会找文件的第一个目标文件,并把这个文件作为最终的目标文件。...找寻的过程,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错, 而对于所定义的命令的错误,或是编译不成功,make根本不理。...上面是打印倒计时的程序,不过在运行时,为什么不会进行打印呢?因为\r会让光标回到行首,光标指的地方,内容就被覆盖了,下图是VS测试的结果,此时光标3的位置,3就被覆盖了,无法打印出来。

9010

Makefile学习1

,不需要什么依赖,仅仅是执行删除操作,所以这个规则并没有目标依赖。...make在编译程序时,会依次检查依赖关系树的所有源文件的时间戳,如果发现某个文件的时间戳更新,会认为这个文件改动过,会重新编译这个源文件。...应用: 立即展开变量一般用在规则的目标、目标依赖make解析Makefile阶段,需要这些变量确切的值来构建依赖关系树。...比如在编译程序时,无论命令行指定什么参数,编译器在编译时必需打开 -Wall选项,那么Makefile的CFLAGS应该这样定义: .PHONY: all override CFLAGS += -...override修饰: # make CFLAGS = -Wall # make CFLAGS=-g CFLAGS = -g Makefile递归执行 实际工程项目中,各个源文件通常存放在各个不同的目录

31710
领券