cmake link 个子目录在一起
cmake link subdirectories together
我的 QT 项目中有以下文件夹层次结构,我需要在 ImageProcessing 文件夹的 类 中使用 Utility 文件夹的一些 类。
实用程序的 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})
ImageProcessing 的 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})
当我尝试在 ImageProcessing 的 类 中包含 Utilities 中的 类 时:
#include "Utilities/className.h"
编译器总是失败。不知道为什么?好像漏掉或者误解了什么。
谢谢。
您的行 include_directories(../Utilities)
添加路径 ../Utilities
以包含目录。但是,您在源文件中包含 Utilities/className.h
,这会使编译器搜索文件 ./Utilities/className.h
和 ../Utilities/Utilities/className.h
.
删除 include_directories
或 #include
中的 Utilities
之一。
include_directories(..)
或
#include "className.h"
我的 QT 项目中有以下文件夹层次结构,我需要在 ImageProcessing 文件夹的 类 中使用 Utility 文件夹的一些 类。
实用程序的 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})
ImageProcessing 的 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})
当我尝试在 ImageProcessing 的 类 中包含 Utilities 中的 类 时:
#include "Utilities/className.h"
编译器总是失败。不知道为什么?好像漏掉或者误解了什么。
谢谢。
您的行 include_directories(../Utilities)
添加路径 ../Utilities
以包含目录。但是,您在源文件中包含 Utilities/className.h
,这会使编译器搜索文件 ./Utilities/className.h
和 ../Utilities/Utilities/className.h
.
删除 include_directories
或 #include
中的 Utilities
之一。
include_directories(..)
或
#include "className.h"