Am 31.07.19 um 08:20 schrieb Stephan Menzel:
Hello all,
I'm trying to adapt my CMake based toolchain to Android and I'm
noticing very strange behavior that I'd like to ask about.
My toolchain is C++ based with some dependencies such as Boost,
OpenSSL or protobuf. So far it works on a variety of platforms such as
Windows (MSVC), several Linuxes, including Raspbian on ARM. So I
considered myself well prepared for Android, thinking it can't be that
different. How wrong I was... I'm cross compiling from a Linux system,
which is able to build the source in question just fine with clang and
gcc. Most recent Android SDK and bundled NDK.
As soon as I started building and finding my 3rd party dependencies I
noticed that many commands in my own scripts or others that try to
find a file (like a header) or a lib fail despite the file being there.
Like here in this case for example (randomly taken from the AWS SDK
installed CMake finders):
My experience has been that find_file and friends behave in unexpected
ways when you set CMAKE_SYSROOT. In our toolchain files, we set
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
as suggested in the cmake-toolchains(7) documentation. We then add the
path to the top-level directory where we keep all our thirdparty
dependencies to CMAKE_FIND_ROOT_PATH, as otherwise find_package and
find_path cannot find anything even when we give them the absolute path
where to search (the find_file documentation suggests that the elements
of the CMAKE_FIND_ROOT_PATH are prepended to the paths specified in the
find_file arguments, but that does not seem to happen if the search
paths are subpaths of the CMAKE_FIND_ROOT_PATH). My guess would be that
the NDK does something similar, meaning you would need to add the path
where to look for AWS to CMAKE_FIND_ROOT_PATH.
CMake feature request: it would be real nice to have a verbose mode for
the find_XXX functions that tell you exactly where CMake is looking for
stuff and why to help debug problems like this.
With kind regards,
Eric
--
*Dr. Eric Dönges *
Senior Software Engineer
MVTec Software GmbH | Arnulfstr. 205 | 80634 Munich | Germany
[email protected] <mailto:[email protected]> | Tel: +49 89 457 695-0 |
www.mvtec.com <http://www.mvtec.com>
Sign up <http://www.mvtec.com/newsletter> for our MVTec Newsletter!
Geschäftsführer: Dr. Wolfgang Eckstein, Dr. Olaf Munkelt
Amtsgericht München HRB 114695
MVTec Software GmbH Logo
--
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:
https://cmake.org/mailman/listinfo/cmake