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
--
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