在Ubuntu系统中,使用Makefile可以帮助你自动化编译和构建C或C++项目。以下是一个简单的步骤指南,帮助你创建和使用Makefile。
首先,创建一个简单的C程序文件,例如hello.c:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
在同一目录下创建一个名为Makefile的文件(注意:文件名是Makefile,不是makefile)。以下是一个简单的Makefile示例:
# 编译器
CC = gcc
# 编译选项
CFLAGS = -Wall -g
# 目标文件
TARGET = hello
# 源文件
SRCS = hello.c
# 可执行文件
OBJS = $(SRCS:.c=.o)
# 默认目标
all: $(TARGET)
# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
# 编译源文件生成目标文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(OBJS) $(TARGET)
在终端中,导航到包含Makefile的目录,然后运行以下命令:
make
这将根据Makefile中的规则编译你的程序,并生成可执行文件hello。
编译成功后,你可以运行生成的可执行文件:
./hello
你应该会看到输出:
Hello, World!
如果你想删除生成的目标文件和可执行文件,可以运行:
make clean
这将执行Makefile中的clean目标,删除所有生成的文件。
CC = gcc:定义编译器为gcc。CFLAGS = -Wall -g:定义编译选项,-Wall表示显示所有警告,-g表示包含调试信息。TARGET = hello:定义最终生成的可执行文件名为hello。SRCS = hello.c:定义源文件为hello.c。OBJS = $(SRCS:.c=.o):将源文件列表中的.c扩展名替换为.o,生成目标文件列表。all: $(TARGET):默认目标是生成可执行文件hello。$(TARGET): $(OBJS):定义如何从目标文件生成可执行文件。%.o: %.c:定义如何从源文件生成目标文件,%是通配符。clean::定义清理生成的文件的规则。通过这种方式,你可以轻松地管理和构建你的C或C++项目。