[QBS] Depends and cpp.includePaths

Joerg Bornemann joerg.bornemann at nokia.com
Mon Feb 27 15:32:10 CET 2012


On 27/02/2012 13:22, ext Ruslan Nigmatullin wrote:

> Is qbs user have to name directory with sources in the same way and the same structure as it will be installed in /usr/include directory? Or user must have external pregenerated directory with pseudo headers fore each included header for each "possibly-not-system" library in source dir (for example libpng)?

No the user doesn't have to use the same directory layout for its source 
tree and the installed headers. See tests/manual/localDeployment for an 
example.

 > Currently qbs doesn't handle dependencies to generated headers at all 
(so boo.cpp, which includes foo.h, can be processed before foo.h will be 
generated, which leads to compile error).

Of course does qbs handle dependencies to generated headers. Otherwise 
building Qt programs with .ui files wouldn't work at all.
Can you provide an example of something that's broken?

> The same issue is reproduced if "cpp" file is generated and it contains Q_OBJECT macro (Generated file "boo.cpp" contains directive for including "boo.moc"). Automoc doesn't handle it at all (as file is not created at the moment when check is performing). If tag "moc_cpp" is set manually qbs crashes. If crash is fixed and artifact for moc is created cpp's "obj" parent doesn't depend on it, so "g++" is called before "moc" and it again leads to compile error.

That automoc thingy cannot handle generated files ATM. That's true.

> The only way I found is to scan file for dependencies again right after it was generated and reapplying rules for it (that will add "moc_*" tag for generated files with Q_OBJECT macro). Also may be it's needed to check somehow for generatable headers at includes processing state. For example if "generated/foo.h" with fileTag "hpp" is generated by Rule from "foo.txt" and "boo.cpp" contains "#include<generated/foo.h>" the last one should depend on "foo.h".

Why does your .cpp generator not know whether its generating .cpp files 
that need to be moc'ed? It could just add the "moc_cpp" and "cpp" 
filetags and doesn't have to rely on automoc.


BR,

Jörg



More information about the Qbs mailing list