【发布时间】:2016-11-04 21:00:25
【问题描述】:
我的编译器在 cpp 文件中包含的子文件夹中找不到标头
#include "comm\ComPublic.h"
我的主生成文件:
SUB_POUET=Pouet \
PouetTech \
PouetPrivate
all: $(SUB_POUET)
PouetTech:
@(cd PouetTech && $(MAKE))
Pouet:
@(cd Pouet && $(MAKE))
PouetPrivate:
@(cd PouetPrivate && $(MAKE))
.PHONY: clean mrproper $(SUB_POUET)
clean:
@(cd $(SUB_POUET) && $(MAKE) $@)
mrproper: clean
@(cd $(SUB_POUET) && $(MAKE) $@)
子makefile1:
include ../Definitions.mif
SRC=$(wildcard *.cpp)
OBJ_FILES=$(addprefix $(OBJECTS_DIR)/,$(notdir $(SRC:.cpp=.o)))
INCLUDES=-I../PouetTech -I../../libs/MPSSE -I../../libs/FTDI/$(OS) -I../shared -I../../libs/libmodbus-3.0.6/src
CXXFLAGS+=$(INCLUDES)
all: $(OBJ_FILES)
$(OBJECTS_DIR)/%o: %cpp | objects_dir
$(CXX) -o $@ -c $< $(CXXFLAGS)
objects_dir:
mkdir -p $(OBJECTS_DIR)
.PHONY: clean mrproper
clean:
rm -rf *.o
子生成文件 2
include ../Definitions.mif
SRC=$(wildcard *.cpp)
OBJ_FILES=$(addprefix $(OBJECTS_DIR)/,$(notdir $(SRC:.cpp=.o)))
INCLUDES=-I../PouetTech -I../Pouet -I../shared
CXXFLAGS+=$(INCLUDES)
all: $(OBJ_FILES)
$(OBJECTS_DIR)/%o: %cpp | objects_dir
$(CXX) -o $@ -c $< $(CXXFLAGS)
objects_dir:
mkdir -p $(OBJECTS_DIR)
.PHONY: clean mrproper
clean:
rm -rf *.o
子生成文件 3 与 2 相同。 我的文件夹是这样的:
src
|_makefile
|_Pouet
| |_makefile
|_PouetTech
| |_makefile
|_PouetPrivate
| |_makefile
|_shared
|_comm
|_ComPublic.h
在第 3 个 makefile (PouetPrivate) 中出现问题,但 makefile 中包含“shared”文件夹。
如果我将 -I../shared/comm 添加到 makefile 并将包含更改为 #include "ComPublic.h" 它可以工作。但我不想在 makefile 中手动包含所有文件夹。
这可能只是一个简单的错误,但我没有太多的makefile经验
此外,在 windows 或 Visual Studio 下使用 mingw / msys 时工作正常
编辑:我对“comm”的另一个子文件夹也有同样的问题
【问题讨论】: