QtCreator:在构建阴影时包含生成的UI文件

时间:2014-12-09 08:03:27

标签: qt qt-creator

我正在使用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

但是,在构建阴影时这不起作用,因为生成的文件位于阴影构建文件夹中,而源文件位于源文件夹中。

有没有办法让阴影构建工作,或者是否有更复杂的方法来处理这种情况?

2 个答案:

答案 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)

我个人没有遇到过这个问题,但问题可能会出现,因为

  1. 可能正在寻找他们当前的目录。看看你是怎么做的 在头文件中包含ui_.h文件。添加到qmake的includepath的UI文件路径。

  2. 您可以使用UI_DIR变量更改创建它们的位置 你的.pro文件。