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

如何让GNU make输出它执行的命令来构建其目标

GNU make是一个常用的构建工具,用于自动化构建软件项目。它通过读取Makefile文件中的规则来确定如何构建目标。默认情况下,make在执行规则时不会显示实际执行的命令,只会显示规则的输出。

要让GNU make输出它执行的命令来构建其目标,可以使用make命令的"-n"或"--just-print"选项。这个选项告诉make只打印命令,而不实际执行它们。例如:

代码语言:txt
复制
make -n target

这将打印出构建目标"target"所需的命令,但不会实际执行它们。这对于调试Makefile或查看构建过程中实际执行的命令非常有用。

另外,可以使用make命令的"-p"或"--print-data-base"选项来打印make的内部数据库,其中包含了所有的规则和变量。这可以帮助了解make是如何解析Makefile并执行命令的。例如:

代码语言:txt
复制
make -p

这将打印出make的内部数据库,包括所有的规则和变量。可以通过查看这些信息来了解make是如何执行命令来构建目标的。

总结起来,要让GNU make输出它执行的命令来构建其目标,可以使用以下方法:

  1. 使用make命令的"-n"或"--just-print"选项,例如:make -n target。
  2. 使用make命令的"-p"或"--print-data-base"选项,例如:make -p。

请注意,以上答案中没有提及腾讯云相关产品和产品介绍链接地址,因为与GNU make相关的问题与云计算品牌商无关。

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

相关·内容

Linux下make命令用法

本文我们将用一些实例讨论 make 命令背后工作机制。 Make 如何工作 对于不知道背后机理的人来说,make 命令命令行参数一样接收目标。...这些目标通常存放在以 “Makefile” 命名特殊文件中,同时文件也包含与目标相对应操作。更多信息,阅读关于 Makefiles 如何工作系列文章。...当 make 命令第一次执行时,扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立依赖关系,然后编译它们。...现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关目标文件,因此,编译完最终执行文件节省了大量时间。...--More-- 这是很长输出,你也看到我使用了 more 命令一页一页显示输出。 4.

17.5K41

linux下make命令使用方法

Make 如何工作 对于不知道背后机理的人来说,make 命令命令行参数一样接收目标。这些目标通常存放在以 “Makefile” 命名特殊文件中,同时文件也包含与目标相对应操作。...更多信息,阅读关于 Makefiles 如何工作系列文章。 当 make 命令第一次执行时,扫描 Makefile 找到目标以及其依赖。...如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入)。...现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关目标文件,因此,编译完最终执行文件节省了大量时间。...--More-- 这是很长输出,你也看到我使用了 more 命令一页一页显示输出。 4.

3.5K20
  • 第二十四章 : 编译程序

    更有意义是,拥有单独一段知道如何打开文件程序,并允许所有需要程序共享。对常见任务提供支持由所谓库完成。这些库包含多个程序,每个程序执行一些可以由多个程序共享常见任务。...Makefile 是一个配置文件,指示 make 程序究竟如何构建程序。没有make 程序就不能运行。...make 只是构建需要构建部分,而不是简单地重新构建所有的内容。由于所有的目标文件都存在,make 确定没有任何事情需要做。...这种行为也指出了 make 程序另一个重要特征:保持目标文件是最新make 坚持目标文件要新于它们依赖文件。...这个非常有意义,做为一名程序员,经常会更新一点儿源码,然后使用 make 构建一个新版本成品。make 确保基于更新代码构建了需要构建内容。

    25010

    【linux】gcc makefile

    如果test.c 更新过或 mytest 不存在,会执行 gcc -o mytest test.c。 make工具使用文件时间戳决定哪些目标需要重新构建。...具体来说,make会比较目标文件和依赖文件修改时间戳。如果依赖文件比目标文件更新,则目标文件需要重新构建。...makefile/make会自动根据文件中依赖关系,进行自动推导,帮助我们执行所有相关依赖方法 这个 Makefile 使用了变量定义构建目标和源文件路径,以及自动化构建和清理过程。...生成目标文件命令: @gcc -o @ ^: @:抑制命令回显,使得在执行这条命令时不输出命令本身。可以使输出更加整洁。...构建命令make 这会触发以下操作: 使用 gcc 命令编译 test.c,生成 mycode。 使用 echo 命令输出编译信息。

    5310

    Linux:常用软件、工具和周边知识介绍

    如何确定目标文件是否最新: 当你执行 make 命令时,make 工具会比较每个目标文件和它所依赖源文件修改时间。...如果源文件修改时间比目标文件修改时间更晚,或者目标文件不存在,make 工具会执行构建目标文件命令。...在 Makefile 中,使用 .PHONY 声明一个目标为伪目标。这样,当 make 命令执行时,就会忽略目标对应文件存在与否,直接执行后续定义命令。...无论是否存在名为 clean 文件,执行 make clean 命令时,都会执行 rm -f *.o 命令清理所有 .o 文件。...如果该目标文件不存在,或是依赖文件比目标文件修改时间新(包括依赖文件和目标文件本身),那么 make 将会执行后面定义命令来生成目标文件。

    23110

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

    这个示例来源于GNUmake使用手册,在这个示例中,我们工程有8个C文件,和3个头文件,我们要写一个Makefile告诉make命令如何编译和链接这几个文件。...Makefile中,“#”是注释符,很像C/C++中“//”,其后本行字符都被注释。 一、显示命令 通常,make会把执行命令行在命令执行输出到屏幕上。...八、shell函数 shell函数也不像其它函数。顾名思义,参数应该就是操作系统Shell命令和反引号“`”是相同功能。这就是说,shell函数把执行操作系统命令输出作为函数返回。...$(warning ) 这个函数很像error函数,只是并不会make退出,只是输出一段警告信息,而make继续执行。...另外一个很有意思用法是结合“-p”和“-v”输出makefile被执行信息(这个将在后面讲述)。 五、make参数 下面列举了所有GNU make 3.80版参数定义。

    4.3K20

    CMake vs Make对比

    Make”是从程序源文件中控制程序执行文件和其他非源文件生成工具。 “Make”工具需要知道如何构建程序。了解如何从名为“makefile”文件构建程序。...这个makefile列出了每个非源文件以及如何从其他文件中计算。编写程序时,应该为编写一个makefile,以便可以使用“Make构建和安装程序。简单东西!...如果您不知道,您不能使用相同编译器构建所有不同类型源。您可以在每次建立项目时手动执行,但这将是乏味和痛苦。CMake为每种类型目标调用正确命令序列。...为此,GNU项目开发了一套集成实用工具完成Autoconf开始工作:GNU构建系统,最重要组件是Autoconf,Automake和Libtool。 “做”不能这样做,至少没有修改!...CMake解决了同样问题,但与此同时,具有优于GNU构建系统一些优点: 用于编写CMakeLists.txt文件语言是可读和易于理解。 它不仅依靠“Make构建项目。

    4K31

    【Linux】《how linux work》第十五章 开发工具

    Makefile 中下一项包含第一个目标,即 all。第一个目标总是默认,也就是当你在命令行上运行 make 时,make 希望构建目标。...知道当你需要一个 .o 文件时,要查找一个 .c 文件,并且,知道如何运行 cc -c 编译该 .c 文件,以达到创建 .o 文件目标。...如果你连续两次输入 make 命令运行上述示例,第一次命令构建 myprog,但第二次会输出以下内容: make: Nothing to be done for 'all'....The make run proceeds like this: 事实上,你甚至不需要一个Makefile运行make。 如果内置make规则匹配一个目标,你只需make尝试创建该目标即可。...很难区分宏和变量区别,所以我们将使用术语“宏”表示在make开始构建目标后通常不会改变东西。

    10510

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

    这个示例来源于GNUmake使用手册,在这个示例中,我们工程有8个C文件,和3个头文件,我们要写一个Makefile告诉make命令如何编译和链接这几个文件。...在定义好依赖关系后,后续那一行定义了如何生成目标文件操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作,他只管执行所定义命令。...Makefile中,“#”是注释符,很像C/C++中“//”,其后本行字符都被注释。 4.1 显示命令 通常,make会把执行命令行在命令执行输出到屏幕上。....> ) 这个函数很像error函数,只是并不会make退出,只是输出一段警告信息,而make继续执行。...例如,我们有个mak efile名字是“hchen.mk”,那么,我们可以这样make执行这个文件: make –f hchen.mk 如果在make命令行是,你不只一次地使用了

    2.7K20

    聊一聊鸿蒙构建系统

    比如编程入门经典代码,将它写入 helloworld.c 文件中。要编译这段代码,只需要执行以下命令: gcc helloworld.c 编译后会生成一个 a.out 执行程序。...,最后链接成可执行代码,这时命令行方式就捉襟见肘。...GNU Make 通过 Makefile 定义目标依赖、编译规则,也可以调用脚本,完成文件复制、打包等工作,相当强大,至今仍然是类 Unix 系统上主流软件构建工具。...对于开发者而言,不需要去深入了解 Ninja 或 GNU Makefile 这样构建系统,因为只是一种中间输出。 再后来,谷歌又对 GYP 动刀,取而代之是 GN 构建系统。...如果只是构建软件,可以下载 depot_tools,里面包含了 GN、Ninja 等整套构建工具。

    1.5K20

    【Linux】《how linux work》第十六章 从 C 源代码编译软件入门

    这个系统通常被认为是稳定,许多基本Linux工具都在使用它。因为基于现有的工具如make,一旦你看到运行方式,你就能将你知识转移到其他构建系统上。...运行make构建程序。运行make install或特定于发行版安装命令来安装软件包。...在大多数情况下,在源代码分发中目标(或二进制可执行)文件意味着软件包组装不完整,您应该运行make clean以确保进行新编译。...从http://ftp.gnu.org/gnu/coreutils/获取软件包(通常最新版本是最好),解压缩,进入目录,并像这样配置:$ ....make check 一些软件包附带一系列测试验证编译后程序是否正常工作;make check 命令会运行这些测试。

    9710

    命令行上数据科学第二版:六、项目管理与`make`

    步骤之间依赖关系不清楚。 每一步每次都要执行,这是低效,有时也是不可取。 这就是make真正闪耀地方 。make是一个命令行工具,允许您: 根据输入和输出依赖关系形式化您数据工作流步骤。...任何其他文件都是使用命令行工具下载或生成。 6.2 make介绍 make围绕数据及其依赖关系组织命令执行。您数据处理步骤在一个单独文本文件(工作流)中被正式化。每一步都有输入和输出。...一个目标就像一个任务。通常是您想要创建文件名称,但也可以比它更通用。下面这条线,seq 7,被称为规则 。把一个规则想象成一个食谱;一个或多个指定如何构建目标命令。...这不仅会生活变得更轻松(双关语),而且您还会开始按照步骤考虑您数据工作流。正如您自己命令行工具箱一样,它会随着时间推移而扩展,这同样适用于make工作流。...您定义步骤越多,就越容易继续做下去,因为通常您可以重用某些步骤。我希望你会习惯make,它会生活更轻松。 6.6 总结 命令一个优点是允许您处理数据。

    68910

    【Linux】Linux 项目自动化构建工具 -- makemakefile 使用

    Linux 提供了项目自动化构建工具 – makefile 帮助我们解决这个问题;makefile 定义了一系列规则指定如何对众多源文件进行管理;makefile带来好处就是 – “自动化编译...总结:make是一条命令,makefile是一个文件,二者搭配使用,实现项目自动化构建。...在上面的C语言例子中,makefile 中一共有两个目标文件 – test.out 和 clean;如下,我们输入 make 默认只会执行第一个目标文件;当然,我们也可以通过指定多个目标文件形成多个目标文件...另外,由于 clean 没有被第一个目标文件直接或间接关联,那么后面所定义命令将不会被自动执行,所以我们需要显示指定 – make clean; 最后,像 clean 这种目标文件,我们一般都会用...,与源文件内容改动无关,我们可以通过 touch 命令验证:(touch file:如果 file 已存在,则更新 file 所有时间) 在了解了 make如何判断是否要重新执行依赖方法形成目标文件之后

    1K00

    【makefile】

    实际上,GNU make工具通过一个称为Makefile文件完成对应用程序自动维护和编译工作。...默认命令是“g++”。 CO 从 RCS文件中扩展文件程序。默认命令是“co”。 CPP C程序预处理器(输出是标准输出设备)。默认命令是“$(CC) –E”。...2.2隐含规则 GNU make 包含有一些内置或隐含规则,这些规则定义了如何从不同依赖文件建立特定类型目标。...2.4 Makefile中函数 在Makefile中可以使用函数来处理变量,从而命令或规则更为灵活和具有智能,函数调用,很像变量使用,也是以“$”标识,函数调用后,函数返回值可以当做变量来使用...按顺序找这三个文件,一旦找到,就开始读取这个文件并执行,也可以给make命令指定一个特殊名字Makefile,要求使用make“-f”参数,例如:make -f Hello.makefile.

    2K00

    【linux学习指南】Linux项目自动化构建工具 make makefile&&进度条代码

    make 命令 常用 make 命令有: make: 构建 Makefile 中默认目标make target: 构建指定目标make clean: 清理构建产生中间文件。...make all: 构建 Makefile 中所有目标make -n: 显示执行命令,但不实际执行make -j : 并行构建,指定同时执行命令数量。...使用make命令,可以直接执行Makefile文件命令 但是,当我再次执行make命令,这里proc文件无法再次执行: 这个问题是因为: .PHONY是目标文件,对应方法,总是被执行...通常,make 会在执行每一条命令时打印命令本身。使用 @ 符号可以 make输出命令结果,而不输出命令行。...即命令——“make clean”,以此清除所有的目标文件,以便重编译。 但是一般我们这种clean目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行

    16810

    【C++】基础:代码编译与构建工具介绍

    常用构建工具 make make工具相当于一个批处理工具,本身没有编译和链接功能,而是用类似于批处理方式通过调用makefile文件中用户指定编译命令(如gcc、g++)进行编译和链接(当作批处理工具用就行...makefile相当于用户将要执行一系列命令make根据makefile中命令对相应源文件进行编译和链接。...makefile文件才行,执行make all这个命令make会根据makefile中命令进行编译。...${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令调用自己模块 EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件存放位置 LIBRARY_OUTPUT_PATH...旨在提供高效、可扩展和可靠构建系统,适用于大型项目和分布式代码库。

    19910

    自动生成Makefile全过程详解

    在本文中,将给大家介绍如何使用autoconf和automake两个工具帮助我们自动地生成符合自由软件惯例Makefile,这样就可以象常 见GNU程序一样,只要使用“....你还可以试着使用一些make命令,如make clean,make install,make dist,看看它们会给你什么样效果。感觉如何?...7、 Makefile 在符合GNU Makefiel惯例Makefile中,包含了一些基本预先定义操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。...make clean 清除上次make命令所产生object文件(后缀为“.o”文件)及可执行文件。...这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。

    1.8K20

    Make 快速入门

    但是,make 不限于某一特定语言,凡是可以通过 shell 命令运行编译器语言都可以使用 make 。...Makefile 在使用 make 之前,你必须在当前目录下添加一个 Makefile 文件,描述了文件之间依赖(输入输出)关系,并提供更新文件 Shell 命令。...,例如:可执行文件或目标文件;它也可以是要执行任务名称,例如用于清理生成文件 clean 任务。...在不使用项目中安装情况下,即项目目录下 node_modules 里包,完全可以使用 Makefile 完成一些构建任务,make 优势在于更好管理相互依赖构建任务。 3....既可以出现在目标,先决条件,也可以出现在“菜谱” shell 命令中;可以是命令本身,也可以是命令选项,或者输入输出文件;甚至也可以出现在另一个变量引用中(计算变量)。

    1.5K10

    居然还有方式可以查看Java方法汇编代码,真是神奇。

    在jdk目录里,我们执行以下命令,要求构建一个debug版本jdk,并指定安装路径为jdk-build: $ bash configure --with-debug-level=slowdebug...configure命令执行成功后,我们再执行下面的命令,开始真正构建jdk,并将构建成功后jdk安装到jdk-build目录里: $ make images $ make install 以上两个命令成功后...想要查看java方法在jit编译后汇编代码,我们不仅要在执行java命令时指定一些参数,还需要一个额外小工具,辅助我们解汇编代码。...由上图可见,该工具还是非常简单主要是通过调用gnubinutils解jvm输出汇编代码,该工具详细构建过程可以参考README和Makefile。...下载完binutils后,我们执行以下命令,开始构建hsdis: $ make BINUTILS=binutils-2.35.1 all64 如果没有问题的话,最终会在build/linux-amd64

    1.4K21

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

    这个示例来源于GNUmake使用手册,在这个示例中,我们工程有8个C文件,和3个头文件,我们要写一个Makefile告诉make命令如何编译和链接这几个文件。...在定义好依赖关系后,后续那一行定义了如何生成目标文件操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作,他只管执行所定义命令。...例如,如果我们执行下面的命令: cc -M main.c 输出是: main.o : main.c defs.h 于是由编译器自动生成依赖关系,这样一,你就不必再手动书写若干文件依赖关系,而由编译器自动生成了...Makefile中,“#”是注释符,很像C/C++中“//”,其后本行字符都被注释。 一、显示命令 通常,make会把执行命令行在命令执行输出到屏幕上。...还有一个在“嵌套执行”中比较有用参数,“-w”或是“--print-directory”会在make过程中输出一些信息,你看到目前工作目录。

    3.2K20
    领券