2017-10-31 9 views
1

CMake를 사용하여 Android 용 네이티브 라이브러리 .so를 빌드합니다. 나는 다음을 추가했다.빌드 할 때 CMake를 사용할 때 안드로이드 헤더 포함

set(CMAKE_SYSTEM_NAME Android) 
set(CMAKE_SYSTEM_VERSION 21) # API level 
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) 
set(CMAKE_ANDROID_NDK /path/to/android-ndk) 
set(CMAKE_ANDROID_STL_TYPE gnustl_static) 

는 그러나, 나는 메이크업이 실행될 때 #include <android/log.h>를 찾을 수 없습니다라는 오류가 발생합니다. 이전의 set() 명령에는 android/log.h과 같은 NDK 라이브러리와 헤더가 포함되어있을 수 있지만 분명히 그렇지 않습니다. CMake에서 NDK가 제공 한 헤더와 라이브러리를 포함시키는 가장 좋은 방법은 무엇입니까?

+0

는 말 그대로나요 'CMAKE_ANDROID_NDK'에'/ path/to/android-ndk'을 넣거나 NDK가있는 곳으로 올바른 경로를 넣었습니까? – Michael

+0

내 시스템의 실제 경로가 입력되었습니다. –

답변

1

가장 좋은 방법은 Android Studio를 사용하여 CMake를 구동하는 것입니다. 이것은 사용중인 NDK에 상관없이 경로를 올바르게 설정하는 NDK CMake 도구 체인을 사용하는 가장 쉬운 방법입니다.

Android Studio가 없어도 NDK CMake 도구 체인을 사용할 수 있지만 더 어렵습니다. 프로젝트를 생성 할 때 명령 행에서 CMake에 NDK 툴 체인 파일의 경로를 전달해야합니다.

당신이 (당신의 예에서와 같이) CMake 안드로이드 툴체인을 사용할 필요가 당신이 경로를 포함 설정해야처럼 그것은 보이는 경우 include_directories의을 (/ 경로// 안드로이드 NDK/loglib에)

+0

나는 안드로이드 스튜디오가 CMake를 잘 알고 있으며 나는 그것을 복제하기를 바랬다. 내가하려고하는 일을 체계적으로 수행해야합니다. –

+0

Studio를 사용하지 않는 경우 NDK에 포함 된 CMake 툴체인 파일을 사용해야합니다. 'cmake -DCMAKE_TOOLCHAIN_FILE = $ NDK/build/cmake/android.toolchain.cmake'. 그 파일의 맨 위에서 다른 옵션 목록을보십시오. –