C语言 add、sub、mul 和 div 程序的 Makefile
什么是 Makefile?
Makefile 是许多编程项目中使用的一个独特文件,它可以通过编译和链接自动生成可执行程序。它提供了关于链接和编译程序的指令,以及源文件依赖项和构建命令的列表。名为 make 的程序读取 Makefile 并运行所需的命令。
Makefile 的一般格式
- 指定编译器(gcc 用于 C 编程 和 g++ 用于 C++ 编程)。
- 指定编译器标志。
- 定义目标可执行文件。
- 定义默认目标(all)。
- 将源文件编译并链接到可执行文件。(也可以使用目标文件)。
- 清理目标以删除可执行文件。
让我们看看 C 语言中加法、减法、乘法和除法程序的 Makefile 示例。
add、sub、mul 和 div 程序的 Makefile
# Compiler to use
CC = gcc
# Compiler flags
CFLAGS = -Wall -g
# Target executable names
TARGETS = add sub mul div
# Default target when running "make"
all: $(TARGETS)
run_add:add
@./add
run_sub:sub
@./sub
run_mul:mul
@./mul
run_div:div
@./div
# Rule for creating the addition program
add: add.c
@$(CC) $(CFLAGS) -o add add.c
# Rule for creating the subtraction program
sub: sub.c
@$(CC) $(CFLAGS) -o sub sub.c
# Rule for creating the multiplication program
mul: mul.c
@$(CC) $(CFLAGS) -o mul mul.c
# Rule for creating the division program
div: div.c
@$(CC) $(CFLAGS) -o div div.c
# Clean up object files and executables
clean:
rm -f $(TARGETS)
Makefile 执行说明
- CC = gcc:此行将gcc 设置为用于编译 C 程序的编译器。
- CFLAGS = -Wall -g:在这里,-Wall 启用所有警告,这有助于识别代码中潜在的问题。-g 使用 gdb 等工具生成调试信息。
- 这里, TARGETS 是一个包含可执行文件名称的变量。稍后我们可以使用$(TARGETS) 来引用所有目标,而不是重复键入每个名称。
- all: 这是在不带任何特定指令调用 make 时运行的默认目标。
- add: add.c: 它定义了将add.c 编译成可执行文件add 的规则
@$(CC) $(CFLAGS) -o add add.c 运行编译器命令,使用gcc 和指定的标志(-Wall -g)创建 add 可执行文件。其他操作与此类似。 - run_<operation> 允许编译和运行每个程序 run_add 编译 add(如果尚未构建)。 ./add 运行 add 可执行文件。@ 用于抑制输出。其他程序与此类似。
- clean 目标用于删除已编译的可执行文件。
以下是 C 语言中加法、减法、乘法和除法程序。
程序文件
add.c
#include <stdio.h> int main() { int a, b; printf("Enter two integers to add: "); scanf("%d %d", &a, &b); printf("Sum: %d
", a + b); return 0; }
sub.c
#include <stdio.h> int main() { int a, b; printf("Enter two integers to subtract: "); scanf("%d %d", &a, &b); printf("Difference: %d
", a - b); return 0; }
mul.c
#include <stdio.h> int main() { int a, b; printf("Enter two integers to multiply: "); scanf("%d %d", &a, &b); printf("Product: %d
", a * b); return 0; }
div.c
#include <stdio.h> int main() { int a, b; printf("Enter two integers to divide: "); scanf("%d %d", &a, &b); if (b != 0) printf("Quotient: %d
", a / b); else printf("Error: Division by zero.
"); return 0; }
此 Makefile 及其相关程序位于同一个目录下。
运行 make 以执行特定操作。
广告