【发布时间】:2021-07-23 02:49:52
【问题描述】:
我正在尝试用 gnu make 编译一个 c 程序,以便将创建的目标文件放在 Build 目录中。我的项目目录如下所示:
| root
|--> makefile
|--> BuildDir
|--> HeadersDir
| -> main.h
| .
| .
|--> Modules
| -> modules1.c
| .
| .
|--> Program
| -> program1.c
| .
| .
我希望从模块和程序源文件创建的所有目标文件都保存在 BuildDir 中。到目前为止我有这个makefile
CC = gcc
CFLAGS = -Wall -Wextra -g3 -I./HeaderFiles
LDFLAGS = -lm
# Get all source files
SRCFILES := $(wildcard ./Programs/*.c)
SRCFILES += $(wildcard ./Modules/*.c)
# Generate objective files
OBJFILES = $(patsubst %.c, %.o, $(SRCFILES))
OBJFILES := $(subst ./Programs, ./Build, $(OBJFILES))
OBJFILES := $(subst ./Modules, ./Build, $(OBJFILES))
EXEC = travelMonitor
PARAMETERS =
all: $(OBJFILES) $(EXEC)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
$(EXEC): $(OBJFILES)
$(CC) $(CFLAGS) $(OBJFILES) -o $@
然后输出:
make: *** No rule to make target 'Build/mainFunctions.o', needed by 'all'. Stop.
谁能帮忙?
【问题讨论】: