【问题标题】:Header in subfolder not found未找到子文件夹中的标题
【发布时间】: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”的另一个子文件夹也有同样的问题

【问题讨论】:

    标签: linux makefile g++


    【解决方案1】:

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

    幸运的是,Visual C++ 将接受这两个分隔符,所以/ 可以被全部使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2013-05-18
      • 2021-10-10
      • 2015-12-18
      • 2019-10-21
      相关资源
      最近更新 更多