makefile

Makefile 用于帮助决定大型程序的哪些部分需要重新编译。在绝大多数情况下,编译 C 或 C++ 文件。其他语言通常有自己的工具,其目的与 Make 类似。当您需要根据更改的文件运行一系列指令时,Make 也可以在编译之外使用。

运行make hello。只要hello文件不存在,命令就会运行。如果hello确实存在,则不会运行任何命令。

尝试简单地运行make。由于没有目标作为命令的参数提供make,因此运行第一个目标。在这种情况下,只有一个目标 ( blah)。第一次运行时,blah将被创建。第二次,你会看到make: 'blah' is up to date。那是因为blah文件已经存在。但是有一个问题:如果我们修改blah.c然后运行make,则不会重新编译任何内容。

通过添加一个先决条件来解决这个问题:

blah: blah.c
  • 编译 C 程序:由 表单命令自动制作n.on.c$(CC) -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
  • 编译C++程序:由表单命令自动制作或使用表单命令制作n.on.ccn.cpp$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $^ -o $@
  • 链接单个对象文件:通过运行命令自动创建nn.o$(CC) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@

 

在命令之前添加一个以阻止其打印
您还可以运行 make with 以在每行之前添加一个@-s@

模式规则中经常使用模式规则,但非常混乱。您可以通过两种方式查看它们:

  • 定义自己的隐式规则的方法
  • 更简单形式的静态模式规则

让我们先从一个例子开始:

# Define a pattern rule that compiles every .c file into a .o file
%.o : %.c
		$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

模式规则在目标中包含“%”。此“%”匹配任何非空字符串,其他字符匹配自身。模式规则的先决条件中的“%”代表与目标中的“%”匹配的同一词干。

如果希望字符串具有美元符号,可以使用 。这是如何在 or 中使用 shell 变量的方法。$$bashsh

 

 

 

 

posted @ 2023-05-14 20:28  13763857269  阅读(69)  评论(0)    收藏  举报