[CMake] find_file - strange behavior when using Android toolchain

ugesh reddy abhiugeshreddy at gmail.com
Wed Jul 31 04:15:26 EDT 2019


Hi,

Sorry a small correction.

There is no such thing as "NO_CMAKE_SYSROOT".

find_file(AWSSDK_CORE_HEADER_FILE Aws.h
            "${AWSSDK_ROOT_DIR}/${AWSSDK_INSTALL_INCLUDEDIR}/aws/core"

"${AWSSDK_DEFAULT_ROOT_DIR}/${AWSSDK_INSTALL_INCLUDEDIR}/aws/core"
            NO_CMAKE_FIND_ROOT_PATH
*            NO_CMAKE_SYSTEM_PATH*
            )

Regards,
Ugesh

On Wed, Jul 31, 2019 at 9:49 AM ugesh reddy <abhiugeshreddy at gmail.com>
wrote:

> Hi,
>
> I also have the same issue with find_file/find_path/find_package when I
> use the Android NDK and Eric's explanation make sense.
>
> One way to solve this
>
> find_file(AWSSDK_CORE_HEADER_FILE Aws.h
>             "${AWSSDK_ROOT_DIR}/${AWSSDK_INSTALL_INCLUDEDIR}/aws/core"
>
> "${AWSSDK_DEFAULT_ROOT_DIR}/${AWSSDK_INSTALL_INCLUDEDIR}/aws/core"
> *            NO_CMAKE_FIND_ROOT_PATH*
> *            NO_CMAKE_SYSROOT*
>             )
>
> Regards,
> Ugesh Gurram.
>
> On Wed, Jul 31, 2019 at 9:16 AM Eric Doenges <doenges at mvtec.com> wrote:
>
>> 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
>> doenges at mvtec.com | Tel: +49 89 457 695-0 | 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
>>
>>
>> [image: 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
>>
>
>
> --
>  Ugesh
>


-- 
 Ugesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20190731/d6b26546/attachment.html>


More information about the CMake mailing list