Я использую android-cmake для компиляции приложения для Android.По сути, это создает файл набора инструментов CMake для использования набора инструментов, поставляемого с Android NDK.
Как и в случае этого связанного вопроса , у меня возникли проблемы со следующей строкой в моем файле CMakeLists.txt:
find_package(Threads REQUIRED)
Файл заголовка расположен по адресу
~/Android/android-ndk-r7/platforms/android-8/arch-arm/usr/include/pthread.h
Файл библиотеки расположен по адресу
~/Android/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libthread_db.so
Проблема заключается в том, что FindThreads.cmake вызывает CHECK_INCLUDE_FILES("pthread.h", CMAKE_HAVE_PTHREAD_H)
и это, кажется, не беспокоит, чтобы проверить в этом каталоге.
В соответствии с Вики-страницу полезных переменных CMake CMAKE_INCLUDE_PATH
позволяет установить путь поиска заголовка, CMAKE_LIBRARY_PATH
позволяет установитьПуть поиска в библиотеке и, по-видимому, CMAKE_PREFIX_PATH
обеспечивают оба для find_package.
Однако, несмотря на то, устанавливаю ли я переменные среды перед запуском cmake ...
export CMAKE_INCLUDE_PATH=~/Android/android-ndk-r7/platforms/android-8/arch-arm/usr:~/Android/android-ndk-r7/platforms/android-8/arch-arm/usr/include
... или я задаюих непосредственно в CMakeLists.txt ...
if(ANDROID)
set(CMAKE_INCLUDE_PATH
${ANDROID_NDK_SYSROOT}/usr
${ANDROID_NDK_SYSROOT}/usr/include
${CMAKE_INCLUDE_PATH}
)
set(CMAKE_LIBRARY_PATH
${ANDROID_NDK_SYSROOT}/usr
${ANDROID_NDK_SYSROOT}/usr/lib
${CMAKE_LIBRARY_PATH})
set(CMAKE_PREFIX_PATH
${ANDROID_NDK_SYSROOT}
${CMAKE_PREFIX_PATH})
message(${ANDROID_NDK_SYSROOT})
message(${CMAKE_INCLUDE_PATH})
endif()
find_package(Threads REQUIRED)
... (и это действительно выполняется, сообщения печатаются), и где ${ANDROID_NDK_SYSROOT}
содержит
/Users/martin/Android/android-ndk-r7/platforms/android-8/arch-arm
Iвсе еще получаю сообщение
Не удалось найти темы (отсутствует: Threads_FOUND)
У кого-нибудь есть предложения относительно того, что я делаю неправильно?