2017-10-04 11 views
1

Android用のCMake ExternalLibraryオプションを使用して、外部ライブラリtaglibを構築しています。 CMAKE_ANDROID_ARCH_ABIx86に設定しましたが、ビルド時には常にarmeabi共有ライブラリが作成されます。どうして?ここでCMakeスクリプトはCMAKE_ANDROID_ARCH_ABIを無視し、常にarmeabiを構築します

はスニペットです:

include(ExternalProject) 

# taglib configuration 
set(TAGLIB_VERSION 1.11.1) 
set(TAGLIB_CHECKSUM "8624219ba50c77f17889af15e1ca5f7d") 

ExternalProject_Add(
    taglib 
    URL ${CMAKE_CURRENT_SOURCE_DIR}/external/taglib-${TAGLIB_VERSION}.zip 
    URL_MD5 ${TAGLIB_CHECKSUM} 
    CONFIGURE_COMMAND ${CMAKE_COMMAND} 
         ${CMAKE_CURRENT_BINARY_DIR}/taglib/src/taglib 
         -DCMAKE_SYSTEM_NAME=Android 
         -DCMAKE_ANDROID_API=${ANDROID_NATIVE_API_LEVEL} 
         -DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ABI} 
         -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 
         -GUnix\ Makefiles 
         -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} 
         -DBUILD_SHARED_LIBS=ON 
         -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/build/taglib/${ANDROID_ABI} 

    PREFIX taglib 
    INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} install 
        && 
        ${CMAKE_COMMAND} -E copy 
        ${CMAKE_CURRENT_BINARY_DIR}/build/taglib/${ANDROID_ABI}/lib/libtag.so 
        ${CMAKE_SUPERBUILD_OUT}/${ANDROID_ABI}/libtag.so 
) 

add_library(tag SHARED IMPORTED) 
set_target_properties(tag PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/build/taglib/${ANDROID_ABI}/lib/libtag.so) 
include_directories(${CMAKE_CURRENT_BINARY_DIR}/build/taglib/${ANDROID_ABI}/include) 
+0

あなたは '' 'build.gradle'''ファイルを投稿できますか? – ahasbini

+0

スタンドアロンビルドを使用しているGradleを使用していません。 – Gala

答えて

0

のAndroid NDKツールチェーンファイルがMAKE_ANDROID_ARCH_ABIを使用していない、1もExternalProject_Add呼び出しでANDROID_ABIフラグを指定する必要があります。その後、適切なアーチを構築します。

+0

これで問題は解決しましたか?答えがあれば解決策としてマークしてください。私は '' build.gradle''の '' cmake''ブロックに '' filter''を追加することで解決できたと思います。 – ahasbini

+0

私はGradleを使用していません。 – Gala

関連する問題