📝 Unix Makefile教程
11篇技术文档📅  最后修改于: 2020-11-01 04:35:51        🧑  作者: Mango
Makefile是一个程序构建工具,可在Unix,Linux及其风格上运行。它有助于简化可能需要各种模块的构建程序可执行文件。为了确定模块如何需要一起编译或重新编译,make借助用户定义的makefile。本教程应增强您对Makefile的结构和实用程序的了解。Makefile在编译和链接程序模块时指导make实用程序。任何想要使用make实用程序来编译程序并想了解makefile知识的人都应该阅...
📅  最后修改于: 2020-11-01 04:36:09        🧑  作者: Mango
编译源代码文件可能会很麻烦,尤其是当您必须包含多个源文件并在每次需要编译时都键入compiling命令时。 Makefile是简化此任务的解决方案。Makefile是特殊格式的文件,可帮助自动构建和管理项目。例如,假设我们具有以下源文件。main.cpp你好因数功能.hmain.cpp以下是main.cpp源文件的代码-你好下面给出的代码用于hello.cpp源文件-因数下面给出了factoria...
📅  最后修改于: 2020-11-01 04:36:38        🧑  作者: Mango
make程序允许您使用与变量相似的宏。宏在Makefile中定义为=对。一个例子如下所示-特殊宏在目标规则集中发布任何命令之前,需要预定义某些特殊宏-$ @是要制作的文件的名称。$?是已更改的家属的名称。例如,我们可以使用如下规则:在此示例中,$ @代表您好,$?代表或$ @。cpp拾取所有已更改的源文件。隐式规则中使用了两个以上的特殊宏。他们是-$ <引起操作的相关文件的名称。$ *目标文件和从...
📅  最后修改于: 2020-11-01 04:36:51        🧑  作者: Mango
最终二进制文件依赖于各种源代码和源头文件是很常见的。依赖关系很重要,因为它们会使任何目标的来源成为已知信息。考虑以下示例-在这里,我们告诉make,hello依赖于main.o,factorial.o和hello.o文件。因此,只要这些目标文件中的任何一个发生更改,make都会采取措施。同时,我们需要告诉make如何准备.o文件。因此,我们还需要定义这些依赖关系,如下所示:...
📅  最后修改于: 2020-11-01 04:37:12        🧑  作者: Mango
现在,我们将学习Makefile的规则。Makefile目标规则的一般语法为-在上面的代码中,方括号中的参数是可选的,省略号表示一个或多个。在这里,请注意,每个命令前的选项卡都是必需的。下面给出一个简单的示例,您在其中定义一个规则以使来自其他三个文件的目标打招呼。注–在此示例中,您将必须提供规则以从源文件中创建所有目标文件。语义非常简单。当您说“ make target”时,make将找到适用的目...
📅  最后修改于: 2020-11-01 04:37:28        🧑  作者: Mango
Make可以在相应的.c文件上使用cc -c自动创建ao文件。这些规则是make内置的,您可以利用此优势来缩短Makefile。如果仅在当前目标所依赖的Makefile的依赖行中指定.h文件,make将知道已经需要相应的.cfile。您不必包括用于编译器的命令。这会进一步减少Makefile,如下所示-Make使用一个名为.SUFFIXES的特殊目标来允许您定义自己的后缀。例如,请参考下面给出的依...
📅  最后修改于: 2020-11-01 04:37:55        🧑  作者: Mango
有多种形式的指令可用。您系统上的make程序可能不支持所有指令。因此,请检查您的品牌是否支持我们在此处说明的指令。GNU make支持这些指令。条件指令条件指令是-ifeq指令以条件开头,并指定条件。它包含两个参数,以逗号分隔并用括号括起来。对两个参数都执行变量替换,然后将它们进行比较。如果两个参数匹配,则遵循ifeq之后的makefile的行;否则,它们将被忽略。ifneq指令以条件开头,并指定...
📅  最后修改于: 2020-11-01 04:38:16        🧑  作者: Mango
make程序是一个智能实用程序,可根据您在源文件中所做的更改来工作。如果您有四个文件main.cpp,hello.cpp,factorial.cpp和functions.h,则其余所有文件都依赖于functions.h,而main.cpp既依赖于hello.cpp,又依赖于factorial.cpp。因此,如果您对functions.h进行了任何更改,那么make将重新编译所有源文件以生成新的目标...
📅  最后修改于: 2020-11-01 04:38:41        🧑  作者: Mango
在本章中,我们将研究Makefile的各种其他功能。递归使用Make递归使用make意味着在makefile中使用make作为命令。当您要为组成较大系统的各个子系统使用单独的makefile时,此技术很有用。例如,假设您有一个名为`subdir’的子目录,它有自己的makefile,并且您希望包含目录的makefile在该子目录上运行make。您可以通过编写以下代码来做到这一点-您只需复制此示例即...
📅  最后修改于: 2020-11-01 04:38:53        🧑  作者: Mango
这是用于编译hello程序的Makefile的示例。该程序由三个文件main.cpp,factorial.cpp和hello.cpp组成。现在你可以使用make建立程序打招呼。如果发出命令make clean,它将删除当前目录中所有可用的目标文件和核心文件。...
📅  最后修改于: 2020-11-01 05:45:26        🧑  作者: Mango
Makefile是一个程序构建工具,可在Unix,Linux及其风格上运行。它有助于简化可能需要各种模块的构建程序可执行文件。为了确定模块如何需要一起编译或重新编译,make借助用户定义的makefile。本教程应增强您对Makefile的结构和实用程序的了解。...