【发布时间】:2012-01-13 06:53:03
【问题描述】:
我正在使用android-cmake 为Android 编译一个应用程序。这实际上创建了一个 CMake 工具链文件,用于使用 Android 的 NDK 提供的工具链。
与 this related question 一样,我的 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's Useful Variables wiki pageCMAKE_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
我仍然收到消息
找不到线程(缺少:Threads_FOUND)
有人对我做错了什么有任何建议吗?
【问题讨论】: