1

我的 C++ 项目目录结构如下所示:

root
  root.pro
  include
    dir1
      header1.h
    dir2
      header2.h
  src
    src.pro
    dir1
      source1.cpp
    dir2
      source2.cpp

我正在尝试使用 CONFIG -= flat 选项生成一个 msvc 项目以保留文件组织。这对源文件非常有用(实际上每个文件都在同一目录中,而不是 .pro 或更深的目录)。

但是对于我的“包含”目录,生成的过滤器相当奇怪/愚蠢!

MSVC_project
  Header Files
    ..
      include
        dir1
          header1.h
        dir2
          header2.h
  Source Files
    src1
      source1.cpp
    src2
      source2.cpp

看起来 qmake 正在尝试重新创建相对于 .pro 目录的目录结构。

使用相对或绝对文件名提供 HEADERS 和 SOURCES qmake 变量不会改变任何内容。

我的 src.pro 文件,没什么特别的:

NAME = proj_name
TEMPLATE = lib
CONFIG -= flat
QT += core gui opengl
ROOTDIR = ..
#ROOTDIR = $$system(cygpath -aw ../..)

HEADERS_PATH = $$ROOTDIR/include

INCLUDEPATH += $$HEADERS_PATH
HEADERS += $$system(find $$HEADERS_PATH -name "*.h")
SOURCES += $$system(find . -name "*.cpp")
...

知道如何告诉 qmake 生成正确的过滤器吗?

4

0 回答 0