Providing multiple different MAJOR API versions with write_basic_package_version_file

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Providing multiple different MAJOR API versions with write_basic_package_version_file

Philip Van Hoof

After Craig's very interesting presentation at CppCon 2019* I learned a
bunch of new things which I of course immediately wanted to try out**.

I read about the write_basic_package_version_file which is in
CMakePackageConfigHelpers. Craig also mentioned in the presentation
that you can have a so called API-version in the target's name. And
that for example Qt does this (Qt5Core, which has the MAJOR number 5 in
its target name).

For my target name I prefer to have the API version after a dash, like
how GLib and DBus packages do it: on current
Ubuntu, for example in /usr/lib/x86_64-linux-gnu.

I wonder what that means for the <filename> property of
write_basic_package_version_file. In the autotools and meson world, the
usage of pkg-config files seems to indicate that the same filename
naming scheme applies to the .pc file:


This allows me to distinguish between older MAJOR API versions of GLib
and newer MAJOR API versions of it, using FindPkgConfig***

Supposedly something similar is possible with find_package's .cmake
files as installed by write_basic_package_version_file?

How do I provide a PackageNameConfigVersion.cmake for major version 1.0
and 2.0 (the equivalent of PackageName-1.0.pc and PackageName-2.0.pc in
the pkgconfig directory)?

Kind regards,




Powered by

Please keep messages on-topic and check the CMake FAQ at:

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support:
CMake Consulting:
CMake Training Courses:

Visit other Kitware open-source projects at

Follow this link to subscribe/unsubscribe:

signature.asc (849 bytes) Download Attachment