如何搜索头文件并在Makefile中创建丢失的目录

时间:2018-12-18 23:49:39

标签: makefile gnu

在我的项目中,我具有目录结构/libs/src。我想创建makefilemain中具有依赖性的/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

1 个答案:

答案 0 :(得分:1)

要在需要之前创建构建目录,请使用order-only prerequisite(OOP)并使用-p的{​​{1}}选项,以避免在已存在错误的情况下发生错误(不应将其存在)由于OOP而需要使用此选项,但最好在Makefiles中使用此选项):

mkdir

对于您的其他问题,我们需要更多信息;如您所描述,它是不可复制的。尝试提供MCVE