Qt component defines

Clinton Stimpson clinton at elemtech.com
Thu Aug 27 00:30:25 CEST 2009


Pau Garcia i Quiles wrote:
> On Wed, Aug 26, 2009 at 11:25 PM, Christoph Feck<christoph at maxiom.de> wrote:
>   
>> Hi,
>>
>> When using Qt qmake, you define the actual Qt components using the "Qt += Xml"
>> etc. flags. In addition to adjusting include and linking options, this also
>> adds an "QT_XML_LIB" define.
>>
>> The problem is that QtTest headers (from 4.6-stable branch) conditionally
>> define GUI related classes based on the QT_GUI_LIB define to avoid linking
>> with QtGui on pure QtCore tests.
>>
>> CMake, however, does not set these defines, and I am wondering if it should,
>> or if I should workaround that in the project files that currently fail.
>>
>> For example, unless I use "add_definitions(-DQT_GUI_LIB)" I get errors about
>> missing symbols when compiling skrooge and kdevelop.
>>     
>
> I forwarded the OP mail to Clinto Stimpson, who is the FindQt4.cmake
> module maintainer. This is his answer:
>
> "
> UseQt4.cmake adds -D flags for each module.
> Are they not correct?  When I added those -D flags it was based on
> qmake's behavior.
>
> Clint
> "
>
> I guess the problem is in KDE we do not do INCLUDE( ${QT_USE_FILE} )
> because we do not use the QT_LIBRARIES var. The reason we do not do
> that is with so many projects being configured in the same CMake pass,
> QT_LIBRARIES would be useless: it would contain the sum of all the Qt
> libraries any one project has requested at some time by using SET(
> QT_USE_QTXXX 1).
>
> Maybe we should do INCLUDE( ${QT_USE_FILE} ) but keep on NOT using
> QT_LIBRARIES ?
>
>   

Actually, you do a include(${QT_USE_FILE}) for each project, not once 
for all of them.
Then you have control of which Qt modules to activate for which projects.

Clint



More information about the Kde-buildsystem mailing list