qmake从子文件夹添加头文件

时间:2018-04-17 13:16:47

标签: c++ include qmake include-path

我正在尝试使用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,其组织方式如下: /模块/ ModuleNames / SubModulesNames /包括

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

根据Matt的回答,我试过了:

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 \

}

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

1 个答案:

答案 0 :(得分:0)

  

有没有办法让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
}
相关问题