在我的项目中,我具有目录结构/libs
和/src
。我想创建makefile
在main
中具有依赖性的/libs
。即。头文件位于/libs
中。我已经使用了以下
#Compiler to use
CC=gcc
#Compiler flags to use
CFLAGS=-c -Wall
BUILD = ./build
SRC = ./src
LIBS = ./libs
SOURCES = $(SRC)/main.c $(SRC)/SmallComponent1.c $(SRC)/SmallComponent2.c $(LIBS)/ExtLib.c
OBJECTS = $(SOURCES: .c=.o)
EXECUTABLE = $(BUILD)/appl.exe
all: $(OBJECTS) $(EXECUTABLE)
$(BUILD):
mkdir $(BUILD)
$(EXECUTABLE) : $(OBJECTS)
$(CC) $(OBJECTS) -o $@
.c.o:
$(CC) $(CFLAGS) -I$(LIBS) $< -o $@
phony: clean
clean:
rm $(BUILD)/*.o $(BUILD)/appl.exe
问题是:如果不存在,如何创建/build
?以及如何在.h
中包含外部$(CC) $(CFLAGS) -I$(LIBS) $< -o $@
,因为-I$(LIBS)
不起作用,出现以下错误./src/main.c:4:20: fatal error: ExtLib.h: No such file or directory
答案 0 :(得分:1)
要在需要之前创建构建目录,请使用order-only prerequisite(OOP)并使用-p
的{{1}}选项,以避免在已存在错误的情况下发生错误(不应将其存在)由于OOP而需要使用此选项,但最好在Makefiles中使用此选项):
mkdir
对于您的其他问题,我们需要更多信息;如您所描述,它是不可复制的。尝试提供MCVE。