[Development] Installing Qt5Config.cmake from the Qt repo?

Stephen Kelly stephen.kelly at kdab.com
Fri Oct 28 13:13:20 CEST 2011


Hi,

== Summary ==

I'm considering adding some cmake files to Qt, which would be installed by Qt, 
and which would make it easier for CMake based projects to depend on Qt.

I'm CC'ing the cmake developers too see what they think of the idea too.

== Clarification ==

To avoid misunderstanding:

* This proposal is not about porting the Qt build system to CMake.
* This would not make Qt depend on CMake at all
* I am proposing to add some plain text files to the Qt repo for installation
* Those plain text files would need to be generated while building Qt (using 
existing mechanisms, like perl).

== How CMake finds packages ==

(Skip this section if you already know how CMake finds packages)

For those who have not used CMake before, it has two ways to find dependencies:

* If you want to find a dependency, you write a Find<Package>.cmake file or use 
    an existing one. Usually this Find<Package>.cmake will not be installed.

* If you want to be easily found for others to depend on, you write a 
    <Package>Config.cmake file and install it to a location CMake will use to  
    find things like that. I assume this is similar to how pkgconfig works, but 
    I have never used pkgconfig. 

    This is most common in the case of projects which use CMake themselves, 
    but there's no reason projects which do not use CMake can't provide 
    similar files. This becomes even more useful with recent CMake features 
    based on finding packages.

Either way, if someone does this in CMake:

find_package(Package)

the result is the ability to use the headers and libraries from Package.

CMake ships with FindQt4.cmake, so anyone using CMake uses 

find_package(Qt4)

to be able to use Qt 4.

== Qt5Config.cmake ==

I propose that we ship a Qt5Config.cmake file with Qt which we install, along 
with macros equivalent to what is currently in Qt4Macros.cmake, and some 
Targets.cmake files.

Then find_package(Qt5) in CMake would use that Config file and there would be no 
need for a FindQt5.cmake.

The advantage of this are:

* It allows people using CMake to start experimenting with Qt 5 ports sooner
* When new features arrive in Qt (such as new libraries like QtDeclarative was 
in Qt 4) we can update the Qt5Config file immediately and test the new features 
more easily.
* We can use the cmake imported targets feature to more easily support debug 
and release versions on Windows.
* KDE does not need a separate FindQt.cmake to the one shipped by CMake.

== Maintainance ==

KDAB (specifically myself) can maintain these CMakes files. We have other 
engineers with both Qt and CMake competencies, and there are more people in 
the CMake and KDE communities with cross-competencies.

That is assuming it works of course. I haven't even prototyped yet in case 
there is some reason this shouldn't be done. I'm quite confident it will 
work though.



I can't think of any reason this effort should be prevented, but if you have a 
reason, please let me know. I'm looking for early objections before I start to 
do any work.

Thanks,

-- 
Stephen Kelly <stephen at kdab.com> | Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-Independent Software Solutions
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3636 bytes
Desc: not available
Url : http://lists.qt-project.org/pipermail/development/attachments/20111028/4fb0cbb7/attachment.bin 


More information about the Development mailing list