Makefile教程

Makefile 定义规则

我们现在将学习 Makefile 的规则。
Makefile 目标规则的一般语法是-
target [target...] : [dependent ....]
[ command ...]
在上面的代码中,括号中的参数是可选的,省略号表示一个或多个。在这里,请注意每个命令前面的选项卡是必需的。
下面给出了一个简单的示例,您可以在其中定义一个规则,以便从其他三个文件中创建目标 hello。
hello: main.o factorial.o hello.o
   $(CC) main.o factorial.o hello.o-o hello
注意-在此示例中,您必须给出规则以从源文件生成所有目标文件。
语义非常简单。当您说"make target"时, make 会找到适用的目标规则;并且,如果任何依赖项比目标更新, make 一次执行一个命令(在宏替换之后)。如果必须创建任何依赖项,则首先发生(因此您有递归)。
如果任何命令返回失败状态, Make 将终止。在这种情况下将显示以下规则-
clean:
  -rm *.o *~ core paper
Make 忽略以破折号开头的命令行上的返回状态。比如,有没有核心文件谁在乎?
Make 回显命令,在宏替换后显示发生了什么。有时您可能想关闭它。例如-
install:
   @echo You must be root to install
人们开始期待 Makefile 中的某些目标。您应该始终先浏览。但是,可以合理地期望找到所有(或只是 make)、安装和清理的目标。
make all-它编译所有内容,以便您可以在安装应用程序之前进行本地测试。 make install-在正确的位置安装应用程序。 make clean-它清理应用程序,清除可执行文件、任何临时文件、目标文件等。

Makefile 隐含规则

该命令应该适用于我们从源代码 x.cpp 构建可执行文件 x 的所有情况。这可以说是一个隐含的规则-
.cpp:
   $(CC) $(CFLAGS) $@.cpp $(LDFLAGS)-o $@
这条隐含规则说明了如何从 x.c 中生成 x——在 x.c 上运行 cc 并调用输出 x。该规则是隐含的,因为没有提到特定的目标。它可以在所有情况下使用。
另一个常见的隐含规则是从 .cpp(源文件)构建 .o(目标)文件。
.cpp.o:
   $(CC) $(CFLAGS)-c 
.cpp.o:
   $(CC) $(CFLAGS)-c $<

alternatively

.cpp.o:
   $(CC) $(CFLAGS)-c $*.cpp
lt; alternatively .cpp.o: $(CC) $(CFLAGS)-c $*.cpp
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4