qmake 从子文件夹添加头文件

qmake adding header files from subfolders

本文关键字:文件 添加 文件夹 qmake      更新时间:2023-10-16

我正在尝试使用 qmake 生成一个 c++ 项目并在 Visual Studio 下编译它。该项目作为 ITK 的依赖项。我制作了一个带有MyITK项目的.pri:

MyITK {
CONFIG_FOUND += MyITK
INCLUDEPATH += $${PACKAGE_SOURCES}/Shared/MyITK
QMAKE_LIBDIR += $${PACKAGE_LIB}/MyITK
win32:LIBS += ITKIONIFTI-4.13.lib  
            ITKCommon-4.13.lib 
            ITKBiasCorrection-4.13.lib 
            ITKBioCell-4.13.lib 

在我的项目的 .pro 中是这样的:

CONFIG += staticlib MyITK
HEADERS += 
   myowncode.h 
   myowncode2.h 
   myowncode3.h 
SOURCES += 
   myowncode.cpp 
   myowncode2.cpp 
当我

尝试编译我的项目时,只有当我将它们直接放在 $${PACKAGE_SOURCES}/Shared/MyITK 中时,它才会找到 .h

如果我"复制粘贴"源代码形式的itk,它的组织方式是这样的:/模块/模块名称/子模块名称/包含

有没有办法让QMake在所有子目录中查找.h?

根据马特的回答,我试过:

ITKModules = Core Filtering IO Numerics Registration Segmentation
Core.submodules = Common  FiniteDifference  
IO.submodules = NIFTI ImageBase
Numerics.submodules = Eigen FEM NarrowBand NeuralNetworks
Registration.submodules = Common FEM
Segmentation.submodules = BioCell ConnectedComponents KLMRegionGrowing 
MyITK {
  CONFIG_FOUND += MyITK
  for(foo, ITKModules): for(bar, $${foo}.submodules) {
  INCLUDEPATH += $${PACKAGE_SOURCES}/Shared/MyITK/Modules/$${foo}/$${bar}/include
  }
  QMAKE_LIBDIR += $${PACKAGE_LIB}/MyITK
  win32:LIBS += ITKIONIFTI-4.13.lib  
    ITKCommon-4.13.lib 
    ITKBiasCorrection-4.13.lib 
    ITKBioCell-4.13.lib 

}

但它仍然无法链接到 .h at VS 编译。

有没有办法让QMake在所有子目录中查找.h?

实际上,您正在尝试使编译器查看所有子目录,而不是qmake

qmake本身没有内置函数来生成子目录列表。但是您可以使用循环稍微美化一下您的pro

modules = x1 x2 x3
x1.submodules = y1 y4
x2.submodules = y2 y5
x3.submodules = y3 y6
for(foo, modules): for(bar, $${foo}.submodules) {
    INCLUDEPATH += /Modules/$${foo}/$${bar}/include
}