我的 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 生成正确的过滤器吗?