【发布时间】:2011-10-06 15:30:01
【问题描述】:
(抱歉,我想不出更好的解释方式,除了包含以下细节)
预构建结构:
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 - 构建所有指定的子项目
- 吐出一堆组织良好的中间文件
- 并将子项目的所有二进制文件放在一个文件夹中
- 所有这些都根据调试或发布范围进行隔离
它似乎工作得很好,除了项目文件夹中的每个“子项目”有一个额外的文件夹,每个文件夹都包含一个 moc 文件夹,我在上面突出显示了“WTF”*。
问题
- .pro 文件中的哪个(组合)指令生成“WTF”文件夹?
- “WTF”文件夹的用途是什么? (请记住 Debug 和 Release 范围指定它们自己的 moc)
- 有没有办法防止“WTF”文件夹被创建?
我还没有任何会导致 MOC 输出 moc 文件的源文件,所以目前所有 moc 文件夹都是空的。
* "WTF" = "什么文件夹"
【问题讨论】:
标签: c++ qt4 build-process qmake out-of-source