> De: "Nils Gladitz" <nilsglad...@gmail.com>
> À: "Julien Schueller" <schuel...@phimeca.com>, "cmake-developers"
> <cmake-developers@cmake.org>
> Envoyé: Vendredi 1 Juillet 2016 13:57:40
> Objet: Re: [cmake-developers] PATHS guess in find_package ignored with
> NO_DEFAULT_PATH & CMAKE_FIND_ROOT_PATH_MODE_PACKAGE

> On 07/01/2016 01:44 PM, Julien Schueller wrote:

>>> De: "Nils Gladitz" <nilsglad...@gmail.com>
>>> À: "Julien Schueller" <schuel...@phimeca.com> , "cmake-developers"
>>> <cmake-developers@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).

> I don't think behavior for relative paths is defined.

> Use absolute paths like "/lib/cmake/hmat", just "/" probably works as well
> (since the path in the prefix matches
> "<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/").

> Nils

Yes, if I use just "/lib/cmake/hmat" it works. Couldn't cmake see that that my 
absolute path begins with CMAKE_FIND_ROOT_PATH and hence should be treated as 
valid according to CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ? 

-- 
Julien Schueller 
Phimeca Engineering 
www.phimeca.com 
-- 

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