[cmake-developers] PATHS guess in find_package ignored with NO_DEFAULT_PATH & CMAKE_FIND_ROOT_PATH_MODE_PACKAGE

Julien Schueller schueller at phimeca.com
Fri Jul 1 07:44:36 EDT 2016


> De: "Nils Gladitz" <nilsgladitz at gmail.com>
> À: "Julien Schueller" <schueller at phimeca.com>, "cmake-developers"
> <cmake-developers at cmake.org>
> Envoyé: Vendredi 1 Juillet 2016 12:37:47
> Objet: Re: [cmake-developers] PATHS guess in find_package ignored with
> NO_DEFAULT_PATH & CMAKE_FIND_ROOT_PATH_MODE_PACKAGE

> On 07/01/2016 11:13 AM, Julien Schueller wrote:

>> I'm using find_package in no-module mode with the PATHS option to provide a
>> hard-coded guess to a path where a sublibrary 'hmat' was previously found,
>> and with the NO_DEFAULT_PATH to not find it first in system directories.
>> find_package (HMAT REQUIRED NO_MODULE PATHS <hmat-prefix>/lib/cmake/hmat
>> NO_DEFAULT_PATH)

>> So far so good. Now I want to cross-compile with the usual toolchain file:
>> set (CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
>> set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
>> set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
>> set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
>> ...
>> This works wonderfully too.

>> But now I add CMAKE_FIND_ROOT_PATH_MODE_PACKAGE to ONLY in my toolchain file to
>> prevent detecting native libraries
>> set (CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
>> And now find_package fails to find my package!

>> I'm puzzled as I did not find in the doc something that explains why the PATHS
>> is ignored (step #8 in find_package):
>> https://cmake.org/cmake/help/v3.5/command/find_package.html#command:find_package

> The given path "<hmat-prefix>/lib/cmake/hmat" is prefixed by the paths in
> CMAKE_FIND_ROOT_PATH.
> Which means that (given ONLY) cmake only looks for the package in
> "/usr/i686-w64-mingw32/<hmat-prefix>/lib/cmake/hmat".

> You might want to e.g. add <hmat-prefix> to CMAKE_FIND_ROOT_PATH and use PATHS /
> instead.

> Nils

Thanks, 

In my case <hmat-prefix> has the same value as CMAKE_FIND_ROOT_PATH, and even if I modify the PATHS option value to be relative (PATHS lib/cmake/hmat) the detection fails. 
(They're not actually set to /usr/i686-w64-mingw32 but some absolute location in my home where I unzip a mingw toolchain, but I can reproduce the issue on another box where the toolchain is natively /usr/i686-w64-mingw32). 

-- 
Julien Schueller 
Phimeca Engineering 
www.phimeca.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20160701/cd8920fa/attachment-0001.html>


More information about the cmake-developers mailing list