2016-11-04 63 views
0

我的编译器不会发现在一个子文件夹的标题包含在CPP文件 #include "comm\ComPublic.h"页眉没有找到

我的主人的Makefile:

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) [email protected]) 

mrproper: clean 
    @(cd $(SUB_POUET) && $(MAKE) [email protected]) 

子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 [email protected] -c $< $(CXXFLAGS) 


objects_dir: 
    mkdir -p $(OBJECTS_DIR) 

.PHONY: clean mrproper 

clean: 
    rm -rf *.o 

Sub-makefile 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 [email protected] -c $< $(CXXFLAGS) 


objects_dir: 
    mkdir -p $(OBJECTS_DIR) 

.PHONY: clean mrproper 

clean: 
    rm -rf *.o 

子生成文件3是相同的2 而我的文件夹是这样的:在第三生成文件(PouetPrivate)过程中出现

src 
    |_makefile 
    |_Pouet 
    | |_makefile 
    |_PouetTech 
    | |_makefile 
    |_PouetPrivate 
    | |_makefile 
    |_shared 
     |_comm 
     |_ComPublic.h 

的问题,但“共用”的文件夹被包括在生成文件。

如果我将-I../shared/comm添加到生成文件并将包含更改为#include "ComPublic.h"它的作品。但我不想手动包含makefile中的所有文件夹。

这可能只是一个简单的错误,但我没有在生成文件太多经验

此外,它的使用MinGW的时候做工精细/窗口或Visual Studio下MSYS

编辑:和我有同样的问题与另一个“通讯”子文件夹

回答

0

如果源代码中的include指令为#include "comm\ComPublic.h",则问题在于您使用的是Windows路径分隔符\。 Linux(和g ++)需要/,并且不会识别路径。

幸运的是,Visual C++将接受两个分隔符,因此/可以用于throughtout。

+0

这的确很简单,谢谢 –