make makefile 的参数

make makefile 的参数

make是一个常用的构建工具,用于自动化编译和构建软件项目。makefile是make工具的配置文件,用于描述项目的构建规则和依赖关系。本文将介绍makefile的参数,包括常用的参数及其用法。

一、常用参数及其用法

1. -f 文件名:指定makefile的文件名,默认为"makefile"或"Makefile"。通过该参数,可以使用其他名称的makefile文件。

2. -C 目录:指定make命令的工作目录。在执行make命令时,会切换到指定的目录,并在该目录下查找makefile文件进行构建。

3. -n:显示执行make命令时的操作,但不实际执行。通过该参数,可以预览make命令的执行过程,检查构建规则是否正确。

4. -p:显示make命令的内置变量和规则。通过该参数,可以查看make命令的内部工作机制,了解makefile文件的编写规则和使用方法。

5. -B:强制重新构建目标文件。通过该参数,可以忽略文件的时间戳,强制重新执行构建规则,生成新的目标文件。

6. -j 并发数:指定make命令的并发执行数。通过该参数,可以提高构建速度,同时执行多个任务。

7. -s:静默模式,不显示执行的命令。通过该参数,可以减少输出信息,使构建过程更加清晰。

二、makefile的构建规则

makefile由一系列构建规则组成,每个规则定义了目标文件、依赖文件和构建命令。make命令根据构建规则,自动判断需要更新的文件,并执行相应的构建命令。

构建规则的基本格式如下:

目标文件: 依赖文件

构建命令

其中,目标文件是要生成的文件,依赖文件是目标文件依赖的文件,构建命令是生成目标文件的命令。

构建规则中的目标文件和依赖文件可以是文件名,也可以是变量。通过使用变量,可以提高makefile的可维护性和灵活性。

构建命令可以是任意的Shell命令,包括编译、链接、拷贝等操作。make命令会自动执行构建命令,生成目标文件。

三、makefile的变量和函数

makefile支持变量和函数的定义和使用,可以提高makefile的可读性和重用性。

1. 变量:通过变量,可以定义和引用一组相同或相关的值。变量的定义格式如下:

变量名 = 值

例如:

CC = gcc

在构建规则中,可以使用$(变量名)或${变量名}的形式引用变量的值。例如:

$(CC) -c main.c -o main.o

2. 函数:makefile支持一些内置的函数,用于处理字符串、文件列表等操作。函数的使用格式如下:

$(函数名参数1 参数2 ...)

例如:

$(wildcard *.c)

常用的函数包括wildcard、patsubst、dir、basename、notdir等,可以根据实际需要选择合适的函数。

四、makefile的条件判断和循环

makefile支持条件判断和循环,可以根据不同的条件执行不同的构

建规则。

1. 条件判断:通过ifeq、ifdef等关键字,可以进行条件判断。条件判断的语法格式如下:

ifeq (条件1, 条件2)

构建规则1

else

构建规则2

endif

例如:

ifeq ($(DEBUG), 1)

CFLAGS += -g

else

CFLAGS += -O2

endif

2. 循环:通过foreach、while等关键字,可以进行循环操作。循环的语法格式如下:

$(关键字变量, 列表)

构建规则

例如:

$(foreach file, $(FILES), $(CC) -c $(file) -o $(basename $(file)).o)

在循环中,可以使用变量和函数,实现灵活的构建规则。

五、makefile的常见问题和解决方法

在编写和使用makefile过程中,常常会遇到一些问题。下面列举了一些常见问题和相应的解决方法。

1. 如何处理文件名中的空格和特殊字符?

在引用文件名时,可以使用双引号或单引号将文件名括起来,例如:$(CC) -c "file name.c" -o "output file.o"

2. 如何处理依赖文件的变化?

make命令会根据依赖文件的时间戳判断文件是否需要重新构建。如果依赖文件发生变化,可以使用touch命令更新目标文件的时间戳,强制重新构建。

3. 如何处理多个目标文件的构建?

可以在makefile中定义多个构建规则,每个规则对应一个目标文件。通过执行make命令时指定目标文件,可以选择构建特定的目标文件。

六、总结

本文介绍了makefile的参数及其用法,包括常用的参数、构建规则、

变量和函数、条件判断和循环。通过合理使用makefile,可以实现软件项目的自动化构建和编译,提高开发效率和代码质量。希望本文能对读者理解和使用makefile有所帮助。

make makefile 的参数

make makefile 的参数 make是一个常用的构建工具,用于自动化编译和构建软件项目。makefile是make工具的配置文件,用于描述项目的构建规则和依赖关系。本文将介绍makefile的参数,包括常用的参数及其用法。 一、常用参数及其用法 1. -f 文件名:指定makefile的文件名,默认为"makefile"或"Makefile"。通过该参数,可以使用其他名称的makefile文件。 2. -C 目录:指定make命令的工作目录。在执行make命令时,会切换到指定的目录,并在该目录下查找makefile文件进行构建。 3. -n:显示执行make命令时的操作,但不实际执行。通过该参数,可以预览make命令的执行过程,检查构建规则是否正确。 4. -p:显示make命令的内置变量和规则。通过该参数,可以查看make命令的内部工作机制,了解makefile文件的编写规则和使用方法。 5. -B:强制重新构建目标文件。通过该参数,可以忽略文件的时间戳,强制重新执行构建规则,生成新的目标文件。 6. -j 并发数:指定make命令的并发执行数。通过该参数,可以提高构建速度,同时执行多个任务。

7. -s:静默模式,不显示执行的命令。通过该参数,可以减少输出信息,使构建过程更加清晰。 二、makefile的构建规则 makefile由一系列构建规则组成,每个规则定义了目标文件、依赖文件和构建命令。make命令根据构建规则,自动判断需要更新的文件,并执行相应的构建命令。 构建规则的基本格式如下: 目标文件: 依赖文件 构建命令 其中,目标文件是要生成的文件,依赖文件是目标文件依赖的文件,构建命令是生成目标文件的命令。 构建规则中的目标文件和依赖文件可以是文件名,也可以是变量。通过使用变量,可以提高makefile的可维护性和灵活性。 构建命令可以是任意的Shell命令,包括编译、链接、拷贝等操作。make命令会自动执行构建命令,生成目标文件。 三、makefile的变量和函数 makefile支持变量和函数的定义和使用,可以提高makefile的可读性和重用性。

Make 命令参数详解

Make 命令参数详解 通过在命令行中指定make命令的选项,可使make以不同的方式运行。Make命令的主要选项参数如下所示。 ●-C dir或者–directory=DIR。 在读取Makefile文件前,先切换到“dir”目录下,即把dir作为当前目录。如果存在多个-C现象make的最终当前目录是第一个目录的相对路径。 ●-d make 执行是打印出所有的调试信息。 ●-e或者—environment-overrides。 ●-f filename或者–file=FILE或者–makefile=FILE使用执行文件作为makefile文件 ●-i 或者–ignore-errors。 忽略执行Makefile中命令时产生的错误,不退出make。 ●-h 或者–help 打印帮助信息 ●-k 或者–keep-going。 执行命令遇到错误时不终止make的执行,make尽最大可能执行所有的命令,直到出现致命错误才终止。 ●-n或者—just-print或者—dry-run。 只打印出要执行的命令,但不执行命令。 ●-o filename 或者–old-file=FILE。 指定文件“filename”不需要重建,即使相对于它的依赖已经过时,同时也不重建依赖于此文件的任何目标文件。 ●-p或者—print-data-base 命令执行之前,打印出make读取的Makefile的所有数据(包括规则和变量的值),同时打印出make的版本信息。如果只需要打印这些数据信息而不执行命令,可以使用“make -qp”命令。查看make执行前的隐含规则和预定义变量,可以使用命令 “make –p-f /dev/null”。 ●-q或者—question 称为“询问模式”,不执行任何命令。Make只是返回一个查询状态值,返回的状态值为0表示没有目标需要重建,1表示存在需要重建的目标,2表示有错误发生。 ●-s或者- -silent。 执行但不显示所执行的命令。 ●-t 或者- - touch。 把所有目标文件的最后修改时间设置为当前系统时间。 ●-v或者- -version 打印make的版本信息。

makefile中make指令传入的参数

makefile中make指令传入的参数 Makefile中make指令传入的参数是指在执行make命令时,可以通过命令行传入的参数。这些参数可以用于控制程序的编译、运行等行为,使得程序更加灵活和可配置。 在Makefile中,我们可以通过在命令行中输入make和参数来执行相应的操作。参数可以是任意的字符串,可以用于指定编译选项、目标文件、源文件等等。下面我将结合一些实际的例子,来详细讲解一下如何使用make指令传入的参数。 我们需要在Makefile中定义一些变量,用于存储传入的参数。可以通过在命令行中使用“变量名=参数值”的方式来传入参数。例如,我们可以定义一个变量CC,用于存储编译器的路径: ``` CC = gcc ``` 在命令行中执行make命令时,可以通过“make CC=/usr/local/bin/gcc”来传入参数,将编译器的路径设置为“/usr/local/bin/gcc”。 接下来,我们可以在Makefile中使用这些参数。例如,我们可以使用$(CC)来表示编译器的路径:

``` $(CC) -o target source.c ``` 在执行make命令时,make会将$(CC)替换为实际的参数值,然后执行相应的命令。这样,我们就可以通过命令行传入不同的编译器路径,来编译源文件。 除了编译器的路径,还可以通过命令行传入其他的参数。例如,我们可以定义一个变量CFLAGS,用于存储编译选项: ``` CFLAGS = -Wall -O2 ``` 在命令行中执行make命令时,可以通过“make CFLAGS=-g”来传入参数,将编译选项设置为“-g”。 然后,我们可以在Makefile中使用这些参数。例如,我们可以在编译命令中加入$(CFLAGS): ``` $(CC) $(CFLAGS) -o target source.c ```

makefile参数

makefile参数 Makefile是一种文本文件,用于描述构建源代码的规则和依赖关系,以及如何将源代码编译成可执行文件或库。Makefile通常由一个名为"make"的工具来解析和执行,该工具会根据规则自动检测源码的更改,并 根据需要重新编译相关文件。 Makefile的参数可以用于修改make工具的行为,并指导其对源代码 进行编译和构建。以下是一些常用的Makefile参数: 1. -f 或--file=: 指定Makefile的文件名。 默认情况下,make工具会在当前目录下寻找名为"Makefile"或"makefile"的文件作为Makefile文件。使用该参数可以指定不同的Makefile文件。 2. -j 或--jobs=: 指定make工具并行处理的任务数。该参数 可以加快构建过程的速度,尤其适用于大型项目。通常推荐的取值范围是CPU核数的两倍。 3. -C

或--directory=: 指定make工具的工作目录。默 认情况下,make工具会在当前目录下查找Makefile文件并进行构建。使 用该参数可以指定其他目录,从而在其中查找Makefile文件并在该目录 下进行构建。 4. --dry-run: 执行模拟运行,不实际构建任何文件。该参数可以用 于检查Makefile的正确性,以及在构建之前查看将要执行的命令。 5. --silent或--quiet: 取消make工具的输出信息。使用该参数可 以让构建过程更加清晰,只显示构建过程的关键信息。

6. --no-print-directory: 取消make工具的目录切换信息的输出。 默认情况下,make工具会在进入每个目录之前打印当前切换的目录路径。使用该参数可以减少输出信息的大小。 7. --version: 显示make工具的版本信息。 8. --help: 显示make工具的帮助信息,包括可用参数的说明和示例。 这些是一些常用的Makefile参数,使用它们可以更好地控制和管理 源代码的构建过程。Makefile的参数可以根据具体项目的需求进行自定义,以便满足不同的构建需求。

makefile 内核模块 编译参数

makefile 内核模块编译参数 Makefile 是一种用于自动化编译程序的工具,它可以通过一系列的规则和命令来指导编译过程。在编译内核模块时,我们需要使用一些特定的编译参数来确保编译顺利进行并生成可加载的内核模块文件。本文将介绍一些常用的编译参数和其作用。 1. KERNELDIR: KERNELDIR 是内核源代码所在的目录。在编译内核模块时,我们需要告诉 Makefile 内核源代码的位置,以便正确地引用头文件和链接符号。 2. CURRENT: CURRENT 是指当前的目录。在编译内核模块时,我们通常会在内核源代码的某个子目录下创建一个 Makefile,并在其中指定 CURRENT 为当前目录。这样可以方便地引用当前目录下的文件。 3. obj-m: obj-m 是一个 Makefile 规则,用于指定要编译的目标模块。我们可以将多个模块分别写在不同的 obj-m 规则中,用空格隔开。编译过程中,Makefile 会自动找到这些目标模块并编译生成对应的内核模块文件。 4. obj-y: obj-y 也是一个 Makefile 规则,用于指定要编译的目标文件。与

obj-m 不同的是,obj-y 指定的是目标文件而不是模块文件。编译过程中,Makefile 会将这些目标文件链接成一个可执行的内核模块。 5. EXTRA_CFLAGS: EXTRA_CFLAGS 是用于指定额外的编译选项的变量。我们可以在这里添加一些额外的编译参数,如优化选项、警告选项等。通过合理地设置 EXTRA_CFLAGS,可以提高编译的效率和安全性。 6. modules: modules 是一个 Makefile 规则,用于指定编译生成内核模块的命令。在这个规则中,我们可以添加一些额外的命令,如清理临时文件、安装模块等。 7. clean: clean 是一个 Makefile 规则,用于指定清理编译生成文件的命令。在这个规则中,我们可以添加一些额外的命令,如删除编译生成的模块文件、临时文件等。 8. install: install 是一个 Makefile 规则,用于指定安装内核模块的命令。在这个规则中,我们可以添加一些额外的命令,如将模块文件复制到指定位置、加载模块等。 9. uninstall: uninstall 是一个 Makefile 规则,用于指定卸载内核模块的命令。

makefile文件中ldflags参数的用法

makefile文件中ldflags参数的用法 概述 在编写m ak ef il e文件时,我们可以使用不同的参数来设置编译器和链接器的选项。其中,`ld fl ag s`参数是一个非常重要的选项,用于指定链接器(Li nk er)的参数和选项。本文将介绍如何正确地使用 `l df la gs`参数,以及其中的常见用法和示例。 ldfla gs参数的基本语法 在m ak ef il e文件中,使用`ld fl ag s`参数的基本语法如下: l d fl ag s:= 其中,``代表一系列链接器的参数和选项,多个参数之间使用空格分隔。 常见用法 1.指定库文件路径 在进行链接时,有时需要指定外部库文件的路径。我们可以使用`-L`选项来指定库文件所在的路径。下面是一个示例: l d fl ag s:=-L/pa th/t o/li b 本示例中,`/p at h/t o/l ib`是库文件所在的路径。 2.指定库文件 除了指定库文件路径,我们还可以使用`-l`选项来明确指定需要链接的库文件。下面是一个示例: l d fl ag s:=-lm yl ib 本示例中,`my li b`是需要链接的库文件名。 3.指定静态链接库

如果需要链接静态库文件,可以使用`-st a ti c`选项。下面是一个示例: l d fl ag s:=-st at ic 本示例中,使用了`-s ta ti c`选项来指示链接器链接静态库。 4.指定动态链接库 如果需要链接动态库文件,可以使用`-sh a re d`选项。下面是一个示例: l d fl ag s:=-sh ar ed 本示例中,使用了`-s ha re d`选项来指示链接器链接动态库。 5.指定其他链接器选项 除了上述常见用法外,还可以使用`l df la g s`参数指定其他链接器选项。例如,可以使用`-O`选项指定优化级别,使用`-n os tar t fi le s`选 项禁止使用系统默认启动文件等。 示例代码 以下是一个完整的示例代码,展示了如何使用`l df la gs`参数来编译 和链接一个简单的C++程序: C C:=g++ C F LA GS:=-W al l-O2 l d fl ag s:=-L/pa th/t o/li b-lm yl ib m a in:m ai n.o $(CC)$(C FL AG S)-o$@$^$(ld fl ag s) m a in.o:m ai n.cp p $(CC)$(C FL AG S)-c$<-o$@ 本示例中,`CC`变量指定了使用的编译器,`C FL AG S`指定了编译选项,`l df la gs`指定了链接选项。通过使用这些变量和选项,我们可以编译和 链接一个名为`m ai n.c pp`的源文件,并生成可执行文件`mai n`。

make编译参数

make编译参数 Make编译参数是指在使用Make工具进行编译时所使用的参数选项。通过合理选择和使用编译参数,可以对编译过程进行优化和定制,以达到更好的编译效果。本文将介绍几个常用的Make编译参数,并分析其作用和用法。 一、-j 参数 -j 参数用于指定并行编译的任务数。在编译大型项目时,可以通过增加并行编译任务数来加快编译速度。例如,使用命令make -j4可以同时启动4个编译任务进行并行编译。 二、-C 参数 -C 参数用于指定要进行编译的目录。有时候需要在多个目录下进行编译,可以使用-C参数来指定目录。例如,使用命令make -C src 可以在src目录下进行编译。 三、-f 参数 -f 参数用于指定要使用的Makefile文件。Makefile是Make工具用来描述编译规则和依赖关系的文件,通过-f参数可以指定不同的Makefile文件进行编译。例如,使用命令make -f Makefile.debug 可以使用Makefile.debug文件进行编译。 四、-B 参数

-B 参数用于强制重新编译所有的目标文件。有时候修改了Makefile文件或源代码,但是Make工具并不会重新编译所有的目标文件,可以使用-B参数来强制重新编译。例如,使用命令make -B可以强制重新编译所有的目标文件。 五、-s 参数 -s 参数用于静默模式,即不输出详细的编译信息。在编译大型项目时,编译信息可能很多,使用-s参数可以只输出关键的编译信息,使输出更加清晰。例如,使用命令make -s可以在编译过程中只输出关键信息。 六、-k 参数 -k 参数用于继续编译其他目标,即使某个目标编译失败。在编译过程中,如果某个目标编译失败,Make工具会停止编译其他目标。使用-k参数可以忽略编译失败的目标,继续编译其他目标。例如,使用命令make -k可以继续编译其他目标。 七、-n 参数 -n 参数用于模拟编译过程,即只输出将要执行的编译命令,而不实际执行。在进行调试或验证编译规则时,可以使用-n参数来查看编译命令是否正确。例如,使用命令make -n可以模拟编译过程,只输出将要执行的编译命令。

makefile ifeq 参数

makefile中的ifeq参数 1. 介绍 在makefile中,ifeq是一个条件判断语句,用于判断两个字符串是否相等,或者判断变量的值是否满足某个条件。ifeq语句的语法如下: ifeq (arg1, arg2) # 条件为真时执行的命令 else # 条件为假时执行的命令 endif 其中arg1和arg2是进行比较的两个字符串或变量,可以使用变量或者字符串字面值。当arg1和arg2相等时,ifeq条件为真,执行条件为真时的命令;否则,条件为假,执行条件为假时的命令。 2. 字符串比较 ifeq语句最常用的功能是进行字符串比较。下面是一个例子: ifeq ($(VAR),foo) # VAR的值等于foo时执行的命令 else # VAR的值不等于foo时执行的命令 endif 在这个例子中,如果变量VAR的值等于foo,则执行条件为真时的命令;否则,执行条件为假时的命令。 3. 变量比较 除了字符串比较,ifeq还可以用于比较变量的值。下面是一个例子: ifeq ($(VAR),$(OTHER_VAR)) # VAR的值等于OTHER_VAR的值时执行的命令 else # VAR的值不等于OTHER_VAR的值时执行的命令 endif 在这个例子中,如果变量VAR的值等于变量OTHER_VAR的值,则执行条件为真时的命令;否则,执行条件为假时的命令。

4. 多个条件 ifeq语句还可以使用逻辑运算符来组合多个条件。下面是一个例子: ifeq ($(VAR),foo) # VAR的值等于foo时执行的命令 else ifeq ($(VAR),bar) # VAR的值等于bar时执行的命令 else # VAR的值既不等于foo也不等于bar时执行的命令 endif 在这个例子中,如果变量VAR的值等于foo,则执行条件为真时的命令;如果VAR 的值等于bar,则执行第二个条件为真时的命令;否则,执行条件为假时的命令。5. 使用ifeq进行编译选项判断 ifeq语句在makefile中还可以用于根据不同的条件设置编译选项。下面是一个例子: ifeq ($(DEBUG),yes) CFLAGS += -g else CFLAGS += -O2 endif 在这个例子中,如果变量DEBUG的值等于yes,则将-g选项添加到CFLAGS变量中;否则,将-O2选项添加到CFLAGS变量中。通过这种方式,可以根据不同的条件设 置不同的编译选项,以实现代码的调试或优化。 6. 总结 ifeq是makefile中的一个条件判断语句,用于判断两个字符串是否相等,或者判 断变量的值是否满足某个条件。可以通过ifeq语句来进行字符串比较、变量比较、多个条件判断以及设置编译选项等操作。在实际的makefile编写中,ifeq语句是 非常有用的工具,可以根据不同的条件执行不同的命令,实现更加灵活和高效的构建过程。

makefile ifeq 参数

makefile中的ifeq参数 在makefile中,ifeq是一个非常有用的参数,它用于条件判断。通过ifeq参数,我们可以根据条件的成立与否来执行不同的操作,这在编写复杂的makefile时非常实用。下面我们来深入探讨ifeq参数,并了解它在makefile中的应用。 ifeq参数的基本语法如下: ifeq (条件, 值) 表达式 else 表达式 endif 其中,条件是一个条件表达式,用于判断条件的成立与否,如果条件成立,就执行第一个表达式;如果条件不成立,就执行else后面的表达式。 在makefile中,ifeq参数通常用于判断变量的取值,并根据不同的取值执行不同的操作。我们可以用ifeq参数来判断操作系统的类型,或者根据指定的目标程序来编译不同的源文件。通过ifeq参数,我们可以让makefile更加灵活和智能,使得编译过程更加高效和精确。

接下来,让我们通过具体的例子来演示ifeq参数的应用。 假设我们有一个项目,其中包含多个源文件和目标文件,我们希望根据不同的目标来编译不同的源文件。在这种情况下,ifeq参数就非常适用。 我们可以定义一个变量TARGET,用来指定要编译的目标。我们可以使用ifeq参数来根据TARGET的取值来决定编译哪些源文件。具体的makefile代码如下所示: ```makefile TARGET := foo ifeq ($(TARGET), foo) SRC := foo.c else ifeq ($(TARGET), bar) SRC := bar.c else SRC := main.c endif all: gcc -o $(TARGET) $(SRC)

makefile make命令参数

makefile make命令参数 Makefile是一种用于自动化编译和构建程序的工具,而make命令则是用来执行Makefile文件中定义的任务。本文将介绍make命令的一些常用参数及其用法。 一、make命令的基本用法 1. make命令的基本语法如下: make [选项] [目标] 其中,选项是可选的,用于指定make命令的一些行为特性。目标是待执行的任务或规则,默认情况下会执行Makefile文件中的第一个目标。 2. make命令常用的选项有: -f <文件名>:指定要使用的Makefile文件,默认为当前目录下的Makefile; -C <目录>:指定Makefile文件所在的目录; -n:仅显示执行的命令,而不真正执行; -s:静默模式,不输出执行的命令; -j <并发数>:指定并发执行的任务数。 3. make命令常用的目标有: all:默认目标,执行该目标将会编译构建整个项目; clean:清理编译生成的中间文件和目标文件;

install:安装编译生成的程序到指定位置; uninstall:卸载已安装的程序; test:运行测试用例。 二、make命令的常用参数 1. -B 或--always-make:强制重新执行所有的任务,即使目标文件已经存在且比依赖文件更新。 2. -d 或--debug:输出详细的调试信息,包括执行的规则和命令。 3. -e 或--environment-overrides:允许环境变量覆盖Makefile 中的变量。 4. -i 或 --ignore-errors:忽略执行命令时的错误,继续执行下一个命令。 5. -k 或--keep-going:继续执行剩余的任务,即使某个任务执行失败。 6. -r 或 --no-builtin-rules:禁止使用内置的规则和变量。 7. -t 或 --touch:仅更新目标文件的时间戳,而不执行命令。 8. -w 或 --print-directory:在执行命令前输出当前所在的目录。 9. --no-print-directory:在执行命令时不输出当前所在的目录。 三、示例 下面是几个使用make命令的示例: 1. 执行默认目标:

makefile编写规则 参数

makefile编写规则参数 Makefile是一种用于管理和自动化构建程序的工具,可以通过编写规则来指定程序的编译和链接过程。本文将介绍如何使用Makefile 编写规则,以及一些常见的用法和技巧。 一、Makefile的基本结构 Makefile由一系列规则(Rule)组成,每个规则包含一个目标(Target)和一组依赖(Dependencies)。目标是指要生成的文件或执行的操作,依赖是指生成目标所需要的文件或操作。 一个基本的规则由目标、依赖和命令组成,如下所示: ``` target: dependencies command ``` 其中,target是要生成的文件或执行的操作,dependencies是生成target所需要的文件或操作,command是生成target的具体命令。 二、编写规则的基本语法 1. 目标(Target):目标是要生成的文件或执行的操作,可以是一个文件名或一个操作的名称。目标可以有多个,每个目标一行。 2. 依赖(Dependencies):依赖是生成目标所需要的文件或操作,

可以是一个或多个文件名或操作的名称,多个依赖之间用空格分隔。 3. 命令(Command):命令是生成目标的具体操作,可以是任意的Shell命令。命令必须以Tab键开头,不能用空格或其他字符替代。 三、常见的用法和技巧 1. 使用变量:可以使用变量来简化编写规则的过程。变量可以用来保存文件名、目录名等常用的值,然后在规则中引用这些变量。 2. 使用通配符:可以使用通配符来匹配一组文件。例如,可以使用*.c来匹配所有的C源文件。 3. 使用模式规则:可以使用模式规则来处理一类文件。模式规则可以通过通配符来匹配一类文件,然后使用命令来处理这些文件。 4. 使用伪目标:伪目标是指不生成文件,只执行操作的目标。可以使用伪目标来定义一些常用的操作,比如清理临时文件。 5. 使用条件判断:可以使用条件判断来根据不同的情况执行不同的命令。条件判断可以根据变量的值、文件是否存在等条件来进行判断。 四、使用示例 下面是一个简单的示例,演示了如何使用Makefile编译和链接一个C程序: ``` # 定义变量 CC = gcc

make参数介绍

“-b” “-m” 这两个参数的作用是忽略和其它版本make的兼容性。 “-B” “--always-make” 认为所有的目标都需要更新(重编译)。 “-C

” “--directory=” 指定读取makefile的目录。如果有多个“-C”参数,make的解释是后面的路径以前面的作为相对路径,并以最后的目录作为被指定目录。如:“make–C~hchen/test–C prog”等价于“make–C~hchen/test/prog”。 “—debug[=]” 输出make的调试信息。它有几种不同的级别可供选择,如果没有参数,那就是输出最简单的调试信息。下面是的取值: a——也就是all,输出所有的调试信息。(会非常的多) b——也就是basic,只输出简单的调试信息。即输出不需要重编译的目标。 v——也就是verbose,在b选项的级别之上。输出的信息包括哪个makefile被解析,不需要被重编译的依赖文件(或是依赖目标)等。 i——也就是implicit,输出所以的隐含规则。 j——也就是jobs,输出执行规则中命令的详细信息,如命令的PID、返回码等。 m——也就是makefile,输出make读取makefile,更新makefile,执行makefile的信息。 “-d” 相当于“--debug=a”。 “-e” “--environment-overrides” 指明环境变量的值覆盖makefile中定义的变量的值。 “-f=” “--file=

指定需要执行的makefile。 “-h” “--help” 显示帮助信息。 “-i” “--ignore-errors” 在执行时忽略所有的错误。 “-I

” “--include-dir=” 指定一个被包含makefile的搜索目标。可以使用多个“-I”参数来指定多个目录。 “-j[]” “--jobs[=]” 指同时运行命令的个数。如果-j后没有这个jobsnum参数,make运行命令时能运行多少就运行多少。如果有一个以上的“-j”参数,那么仅最后一个“-j”才是有效的。(注意这个参数在MS-DOS中是无用的) “-k” “--keep-going” 出错也不停止运行。如果生成一个目标失败了,那么依赖于其上的目标就不会被执行了。“-l” “--load-average[=]” 指定make运行命令的负载。 “-n” “--just-print” “--dry-run” “--recon” 仅输出执行过程中的命令序列,但并不执行。 “-o” “--old-file=

相关主题
相关文档
最新文档