C++ 将子目录链接在一起

C++ 将子目录链接在一起,c++,cmake,qt-creator,C++,Cmake,Qt Creator,在我的QT项目中有以下文件夹层次结构,我需要在ImageProcessing文件夹的类中使用实用工具文件夹的一些类。 CMAKE实用程序文件: file(GLOB Utilities_Files *.cpp *.h *.hpp) # add component add_library(Utilities ${Utilities_Files}) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS})

在我的QT项目中有以下文件夹层次结构,我需要在ImageProcessing文件夹的类中使用实用工具文件夹的一些类。

CMAKE实用程序文件:

file(GLOB Utilities_Files *.cpp *.h *.hpp)

# add component
add_library(Utilities ${Utilities_Files})

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(Utilities ${OpenCV_LIBRARIES})
图像处理的CMAKE文件:

file(GLOB ImageProcessing_FILES *.cpp *.h *.hpp)

# add component
add_library(ImageProcessing ${ImageProcessing_FILES})

include_directories(../Utilities)
target_link_libraries(ImageProcessing Utilities)


find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(ImageProcessing ${OpenCV_LIBRARIES})
#include "Utilities/className.h"
当我尝试在ImageProcessing类中包含实用程序中的类时:

file(GLOB ImageProcessing_FILES *.cpp *.h *.hpp)

# add component
add_library(ImageProcessing ${ImageProcessing_FILES})

include_directories(../Utilities)
target_link_libraries(ImageProcessing Utilities)


find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(ImageProcessing ${OpenCV_LIBRARIES})
#include "Utilities/className.h"
编译器总是失败。。不知道为什么?似乎有什么遗漏或误解


谢谢。

您的行
包含目录(../Utilities)
添加路径
。/Utilities
以包含目录。但是,在源文件中包含
实用程序/className.h
,这使得编译器搜索文件
/Utilities/className.h
。/Utilities/Utilities/className.h

删除
包含
包含
目录中的一个
实用程序

include_directories(..)


在这两种情况下,它都修复了编译器的问题,但现在当我使用ClassName.com时,在包含它的类中,编译器会说“ClassName尚未声明”。奇怪的否?@Maystro:错误“尚未声明类名”与查找包含文件时出现的问题无关。填写另一个问题,并提供导致该错误的代码。@Maystro Tsyvarev是对的,这是一个不同的问题(与CMake无关),应该为其打开一个新问题。另外,请点击左边的滴答声。@ Melebius,谢谢你的帮助。