On 10/03/2014 03:35 AM, 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.

Yes.  The "EXACT" should refer to exactly matching whatever components are
given by the caller.  Following components should still be free to vary.
If the caller wants them to be exact too then they should be specified.

> This sort of selection is currently impossible without additional effort
> in every Find*.cmake that is used.

Is that because of FPHSA's implementation?

> Since we can't change this because of the usual backward compatibility 
> concerns I think we should introduce a new version mode, e.g. EXACT_OR_MINOR 
> (or any other naming you find more appropiate).
> 
> In case this is aggreed on I would try to create a patch ASAP to be able to 
> still land it in 3.1.

I'd rather not introduce a new API in an important command like find_package
immediately before a release.  However, the documentation of find_package
has always said that it is up to the Find module (or package version file
in Config mode) for each package to decide whether a version matches.

I think FPHSA could be changed to implement the expected behavior for
EXACT discussed above.  The current implementation effectively adds
unlimited implicit ".0.0.0" to the caller's components as part of
if(VERSION_EQUAL).  Instead FPHSA could truncate the available version
to match the number of components provided by the caller's version
request before using if(VERSION_EQUAL).

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

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

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to