(抱歉,我想不出更好的解释方式,除非包括以下细节)
预建结构:
F:\
└ Project\
└ Project.pro
└ ProjectSettings.pri
└ Source\
└ Source.pro
└ My_Library\
└ My_Library.pro
└ library.cpp
└ ...
“Project.pro”的内容:
TEMPLATE = subdirs
SUBDIRS = Source
“Source.pro”的内容:
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += My_Library
“My_Library.pro”的内容:
include(../../ProjectSettings.pri)
TEMPLATE = lib
SOURCES += library.cpp
“ProjectSettings.pri”的内容
TARGET = $$basename(_PRO_FILE_PWD_)
Debug:buildDir = "Debug"
Release:buildDir = "Release"
DESTDIR = $$PWD/$$buildDir/bin
OBJECTS_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/obj
MOC_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/moc
RCC_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/rcc
UI_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/gui
后期结构:
F:\
└ Project\
└ Project.pro
└ ProjectSettings.pri
└ Source\
└ Source.pro
└ My_Library\
└ My_Library.pro
└ library.cpp
└ Debug\
└ bin\
└ libMy_Library.a
└ My_Library\
└ moc\
└ obj\
└ library.o
└ My_Library\ <------ WTF
└ moc\
└ Release\
└ bin\
└ libMy_Library.a
└ My_Library\
└ moc\
└ obj\
└ library.o
问题
这个想法是
qmake -recursive
在项目文件夹中运行- 它构建所有指定的子项目
- 吐出一堆组织良好的中间文件
- 并将子项目的所有二进制文件放在一个文件夹中
- 所有这些都基于 Debug 或 Release 范围进行隔离
它似乎工作得很好,除了项目文件夹中的每个“子项目”有一个额外的文件夹,每个文件夹都包含一个 moc 文件夹,我在上面突出显示了“WTF” *。
问题
- .pro 文件中的哪个(组合)指令生成“WTF”文件夹?
- “WTF”文件夹将用于什么?(请记住 Debug 和 Release 范围指定它们自己的 moc)
- 有没有办法防止创建“WTF”文件夹?
我没有任何会导致 MOC 输出 moc 文件的源文件,所以目前所有 moc 文件夹都是空的。
* "WTF" = "什么文件夹"