[Scons-users] Qt tools can't find generated headers using VariantDir
Dirk Bächle
tshortik at gmx.de
Sat Feb 23 05:59:37 EST 2013
Hi Kyle,
On 23.02.2013 00:04, Strand, Kyle J wrote:
> This is actually kind of a repeat of a question I've asked before on
> the mailing list, but it appears that the Qt4 and Qt5 tools don't
> properly handle using VariantDir with the duplicate set to false.
> Included in the Qt4 tool's test directory is a simple setup that uses
> VariantDir. If you change the VariantDir() call to have duplicate=0,
> the build fails with the error "Cannot open include file:
> 'ui_anUiFile.h': No such file or directory". I assume this is because
> when duplicate is set to false, SCons attempts to adjust pathnames
> according to whether they are targets or source files, and the paths
> to header files generated by the Qt tool are somehow improperly
> handled. The workaround I've found is to explicitly make the build
> directory an include path for files in the source directory, but this
> doesn't seem like it should be necessary. Is there a more appropriate
> way to make this work? Is this a bug in the Qt tools?
>
I don't think it's a bug. It's just what happens when you spread your
build over two directories, without adjusting the search path for
includes accordingly. ;)
Based on your "duplicate=0", SCons doesn't create a copy of MyForm.h/cpp
in the build dir as was done before.
So, when the compiler looks for "ui_anUiFile.h" in the current folder
(which is "." for MyForm.*), it can't be found.
> For reference, here's the complete SConstruct file from the Qt4 tool's
> test directory, with the appropriate modification to make it fail:
>
> import qtenv
>
> qtEnv = qtenv.createQtEnvironment()
> qtEnv.EnableQt4Modules(['QtCore','QtGui'])
>
> qtEnv.VariantDir('bld', '.',duplicate=0)
> qtEnv.Uic4('bld/anUiFile.ui')
> qtEnv.Program('bld/test_realqt', ['bld/mocFromCpp.cpp',
> 'bld/mocFromH.cpp',
> 'bld/MyForm.cpp',
> 'bld/main.cpp'])
>
> Note that it still fails if you use the Qt5 tool instead.
>
Please add a
qtEnv.Append(CPPPATH=['bld'])
, it makes the build pass on my side.
Best regards,
Dirk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20130223/304b7ebc/attachment.html>
More information about the Scons-users
mailing list