c - Makefile:编译时没有链接问题
问题描述
目前,我正在尝试在不链接的情况下编译子文件夹中的 .c 文件,并在 Makefile 中创建了一个简单的草稿。我想要做的是将 .o 文件放入 bin/ 目录,而不像我之前描述的那样进行链接。但是无法成功达到任何输出。
有示例 Makefile:
IDIR = test/inc
ODIR = test/src
CC = gcc
CFLAGS = -std=c99 -I$(IDIR)
OBJDIR = bin
.PHONY: clean
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)/%.o: $(ODIR)/*.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
@rm -rf $(OBJDIR)
如果您定义我错过了什么,那就太好了。
解决方案
make 文件需要实际要求创建所有目标文件。建议:
IDIR := test/inc
SDIR := test/src/
CC := gcc
CFLAGS := -Wall -Wextra -Wconversion -pedantic -std=c99 -I$(IDIR)
OBJDIR := bin/
SRCS := (wildcard:$(SDIR)*.c)
OBJS := ($(SRCS):.c=.o)
.PHONY: all clean
all: $(OBJDIR) $(OBJS)
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
@rm -rf $(OBJDIR)
使用以下命令运行上述生成文件:
make -f (your make file name) all
推荐阅读
- python-3.x - 使用不同的协议启动多个服务器(asyncio Stream)
- javascript - Vue+Express+Axios 主机访问 Virtualbox 中的访客应用程序出现 CORS 错误
- python - VRP 最小化总距离
- kotlin - Gradle 只编译一个文件?
- flutter - Flutter - 我正在构建一个使用 Firestore 并保存数据以供用户收藏的 Flutter 应用程序。有没有办法从firestore更新谷歌表?
- python - 在两个不同的列上合并或连接三个数据框
- javascript - (JS) 作为函数返回 null 的值
- java - 带有安卓客户端和计算单元客户端的服务器
- jpa - 如何在spring jpa中使用规范设置标准获取模式?
- r - 为什么在circlize初始化时会出现这个xlim错误?