如何在根目录Makefile中引入并编译src下的test.c程序?
解决Makefile编译C程序的路径问题
1. 根目录放置Makefile的正确写法
你的test.c应该在src子目录下,根目录的Makefile直接写test.c会找不到源文件,需要指定相对路径。修改后的Makefile如下:
# 编译src下的test.c,输出文件Test放在根目录 Test: src/test.c gcc -o Test src/test.c
如果后续要添加更多.c文件到src目录,可以用通配符简化维护:
# 自动匹配src下所有.c文件 SRCS := $(wildcard src/*.c) TARGET := Test $(TARGET): $(SRCS) gcc -o $(TARGET) $(SRCS)
2. src目录放置Makefile的问题修正
把Makefile放在src目录时,编译生成的Test默认会存在src目录里,并非没有输出。如果想把输出文件放到根目录,修改Makefile:
Test: test.c gcc -o ../Test test.c
实用优化建议
- 用Make内置变量
$(CC)替代直接写gcc,提升可移植性:
其中SRC_DIR := src TARGET := Test $(TARGET): $(SRC_DIR)/test.c $(CC) -o $(TARGET) $^$^代表所有依赖文件,简化代码。 - 后续项目变大后,可以新增
build目录存放输出文件,让目录结构更清晰。
内容的提问来源于stack exchange,提问作者SKD
相关产品推荐
相关产品推荐

