[Development] CMake Workshop Summary

Stephen Kelly stkelly at microsoft.com
Wed Feb 13 18:08:58 CET 2019



> -----Original Message-----
> From: Development <development-bounces at qt-project.org> On Behalf Of
> Thiago Macieira
> Sent: Wednesday 13 February 2019 16:36
> To: development at qt-project.org
> Subject: Re: [Development] CMake Workshop Summary
> 
> On Wednesday, 13 February 2019 05:58:18 PST Kevin Funk via Development
> wrote:
> > The problem is, besides the reasons Simon mentioned, that just using
> > "Qt" as the package prefix will make it more difficult for distros to
> > co-install the CMake config files for different Qt versions.
> >
> > Still all up for discussions though. Happy to get more people involved.
> 
> Is it possible to use Qt6 and make the system export "Qt::" as an alias,
> possibly behind an extra option passed in find_package()? 

I think Kevin was talking about the cmake package file names.

> If an alias is not
> possible, is it possible to make find_package() set variables like ${QTCORE}
> that will be either Qt5::Core or Qt6::Core, depending on the one found?

The problem with variables is they can be empty and it is not an error condition:

# CMake issues no error:
target_link_libraries(mything PRIVATE 
    ${OOPS_SOMETHING_WAS_NOT_FOUND}
    ${OOPS_TYPO}
)

Eg if you write this:

find_package(Qt6)

target_link_libraries(mything PRIVATE 
    ${QtCore_LIBRARY}
    ${QTCore_LIBRARY}
    ${QtCore_LIBRARIES}
    # etc
)

Cmake will issue no error even if Qt6 is not found. 

CMake treats explicitly written targets with '::' in their name in a special way. It ensures that they exist

# CMake errors if the Qt5::Core target is not available (either because 
# someone wrote a typo, or because someone forgot to call 
# find_package(), or the find_package() call is there but Qt5 
# was not found)
target_link_libraries(mything PRIVATE Qt5::Core)

Of course it is easy to create a `Qt5or6::Core` target for transitional use and get all the benefits.

target_link_libraries(mything PRIVATE Qt5or6::Core)

Thanks,

Stephen.

> 
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel System Software Products
> 
> 
> 
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.
> qt-
> project.org%2Flistinfo%2Fdevelopment&data=02%7C01%7Cstkelly%40
> microsoft.com%7Ce621428df88a451491a908d691d18d1a%7C72f988bf86f141
> af91ab2d7cd011db47%7C1%7C0%7C636856726536013190&sdata=UwtI
> yJIQOkx%2FVpXirw6yFeUqoQOaYGC3oOUrlNNZ4O4%3D&reserved=0


More information about the Development mailing list