我正在使用QtCreator开发一个更大的应用程序,该应用程序使用SUBDIRS
模板设置为.pro文件。
某些子项目需要包含从其他子项目生成的ui _ * .h文件(例如,为了扩展通用GUI类)。每个子项目都有一行像
UI_DIR = gen/ui/$${CONFIGURATION_NAME}
其中CONFIGURATION_NAME
是" static_debug"或" static_release"。
现在我通常做的是在必要时添加以下内容:
#if _DEBUG
#include <OtherProject/gen/ui/static_debug/ui_SomeClass.h>
#else
#include <OtherProject/gen/ui/static_release/ui_SomeClass.h>
#endif
但是,在构建阴影时这不起作用,因为生成的文件位于阴影构建文件夹中,而源文件位于源文件夹中。
有没有办法让阴影构建工作,或者是否有更复杂的方法来处理这种情况?
答案 0 :(得分:1)
SUBDIRS
模板是一个很棒的功能,但我认为没有足够的文档记录。
以下是来自Qt wiki的链接,在这种情况下有帮助:http://qt-project.org/wiki/QMake-top-level-srcdir-and-builddir
重新上限:
基于Qt4的解决方案
<强> myproject.pro 强>
TEMPLATE = subdirs
SUBDIRS = initvars.pro subdir1 subdir2 #subdir1 and subdir2 are your project subdirs
<强> initvars.pro 强>
TEMPLATE=subdirs
SUBDIRS= # don't build anything, we're just generating the .qmake.cache file
QMAKE_SUBSTITUTES += .qmake.cache.in
<强> \.qmake.cache.in
强>
top_srcdir=$$PWD
top_builddir=$$OUT_PWD
基于Qt5的解决方案
这里的事情变得更容易
top_srcdir=$$PWD
top_builddir=$$shadowed($$PWD)
现在,有了访问实际构建目录的权限,您的子项目将进入相关的子目录。您可以使用此信息填写子项目INCLUDEPATH
文件中的.pro
,以便更轻松地在兄弟项目中包含您需要的内容。
答案 1 :(得分:0)
我个人没有遇到过这个问题,但问题可能会出现,因为
可能正在寻找他们当前的目录。看看你是怎么做的 在头文件中包含ui_.h文件。添加到qmake的includepath的UI文件路径。
您可以使用UI_DIR变量更改创建它们的位置 你的.pro文件。