2016-11-04 62 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

這的確很簡單,謝謝 –