所以我想在Android Studio上構建和測試一個與Android NDK的CMake。我可以讓我的庫進行編譯,但它似乎並不想拉取任何第三方依賴關係。我一直在閱讀工具鏈,並尋找更好的文檔,沒有運氣。有人能告訴我我是否失蹤?Android NDK,與其他庫CMake
cmake_minimum_required(VERSION 3.4.1)
set(SFML_PATH ${ANDROID_NDK}/sources/sfml)
set(SFML_LIB_PATH ${SFML_PATH}/lib/${ANDROID_NDK_ABI_NAME})
set(SFML_LIB_SYSTEM ${SFML_LIB_PATH}/libsfml-system.so)
set(SFML_LIB_AUDIO ${SFML_LIB_PATH}/libsfml-audio.so)
set(SFML_LIB_GRAPHICS ${SFML_LIB_PATH}/libsfml-graphics.so)
set(SFML_LIB_NETWORK ${SFML_LIB_PATH}/libsfml-network.so)
set(SFML_LIB_WINDOW ${SFML_LIB_PATH}/libsfml-window.so)
set(SFML_LIB_ACTIVITY ${SFML_LIB_PATH}/libsfml-activity.so)
set(SFML_LIB_MAIN ${SFML_LIB_PATH}/libsfml-main.a)
set(SFML_LIBS ${SFML_LIB_SYSTEM} ${SFML_LIB_GRAPHICS} ${SFML_LIB_AUDIO} ${SFML_LIB_WINDOW} ${SFML_LIB_ACTIVITY})
include_directories(${SFML_PATH}/include)
link_directories(${SFML_LIB_PATH})
add_library(native-lib SHARED
src/main/cpp/native-lib.cpp)
target_link_libraries(native-lib log ${SFML_LIBS})
#file(COPY ${SFML_LIBS} DESTINATION ${__android_install_path})
FOREACH(SFML_LIB ${SFML_LIB})
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${SFML_LIB}" "${LIBRARY_OUTPUT_PATH}/${SFML_LIB}" RESULT_VARIABLE __fileCopyProcess)
MESSAGE("Lib: ${SFML_LIB}")
ENDFOREACH(SFML_LIB)
上面是我的CMakeLists.txt。我已經做了一些黑客手續,以便用SFML和路徑進行編譯,因爲我還沒有找到有關CMake和Android的良好文檔。
因此,這裏是我的build.gradle http://pastebin.com/K3r54H3b 我一直在關注過這個:http://tools.android.com/tech-docs/external-c-builds – ptDave
我聽起來很奇怪你的.gradle文件,我只對第三方交叉編譯元素使用cmake。假設你的sfm lib是交叉編譯形式的armv7或任何其他體系結構,你應該創建ndk模塊。語法將取決於什麼gradle版本使用,在我的情況下,我使用0.4.0 expermiental。 – uelordi