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

Reply via email to