[cmake-developers] Improving the version selection behavior of EXACT

Ben Boeckel ben.boeckel at kitware.com
Fri Jan 9 15:02:04 EST 2015


On Fri, Jan 09, 2015 at 20:18:25 +0100, Rolf Eike Beer wrote:
> Matthew Woehlke wrote:
> > On 2014-10-03 03:35, Rolf Eike Beer wrote:
> > > find_package(foo 2.0 EXACT) means EXACT, i.e. only "2.0" is allowed. In
> > > most cases this behavior is not the one that one would expect or need.
> > > Most people would instead allow any 2.0.x version to match. This sort of
> > > selection is currently impossible without additional effort in every
> > > Find*.cmake that is used.
> > 
> > This is probably a bit late, but did anyone think of using "MATCHES" to
> > say "all provided components match exactly and the rest can be whatever"?
> 
> I bet everybody will get it wrong.
> 
> Ok, this is "version 2.1 and any of it's patch versions", if _I_ got it right:
> 
> if (VER MATCHES "^2\\.1(\\..*|[^0-9].*)?$")
> 
> So this should match "2.1", "2.1a", "2.1.1", but not "2.10". What combination 
> of stuff did I miss?

What about "VERSION_RANGE 2.1 2.2" which is interpreted as a half-open
range? Should be easier with:

    NOT ver VERSION_LESS low AND ver VERSION_LESS high

--Ben


More information about the cmake-developers mailing list