1 简单的编译c语言的makefile

// myproject.c
#include <stdio.h>
 
int main() {
    printf("Hello, Makefile!\n");
    return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
CC=gcc
CFLAGS=-Wall -g
LDFLAGS=
 
myproject: myproject.o
    $(CC) -o myproject myproject.o $(LDFLAGS)
 
myproject.o: myproject.c
    $(CC) -c myproject.c $(CFLAGS)
 
clean:
    rm -f *.o myproject
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

这个Makefile定义了如何编译和链接你的程序。CC变量指定了编译器(这里是gcc),CFLAGS变量包含了编译器的标志,比如警告选项和调试信息,LDFLAGS变量用于链接时的选项。
运行Makefile:在命令行中运行make命令,Makefile会根据其规则自动编译和链接你的程序。

2 复杂一点的编译c语言的makefile

# 设置编译器
CC = gcc
# 设置编译选项
CFLAGS = -Wall -g
 
# 目标可执行文件
TARGET = myprogram
 
# 源文件列表
SRCS = $(wildcard *.c)
# 目标文件列表
OBJS = $(SRCS:.c=.o)
 
# 默认目标
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $(TARGET)
 
# 依赖于.c文件的.o规则
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
 
# 清理规则
clean:
    rm -f $(TARGET) $(OBJS)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.