laurentgomila / qt-android-cmake Goto Github PK
View Code? Open in Web Editor NEWA simple CMake utility for building and deploying Qt based applications on Android without QtCreator
License: Other
A simple CMake utility for building and deploying Qt based applications on Android without QtCreator
License: Other
When I compile my app using this toolchain, it always make it dependent on ministro, asking me to download all Qt libraries through it. In qtcreator, there is an option to disable this, but how I do that in cmake option?
Sorry to bother with another problem but the latest version seems to delete and renew the folder "builddir/res" of my CMake project.
It creates the folder "builddir/res/values" where it creates the single file libs.xml.
The problem is that I copy some files like drawables and string files into this directory before building the APK which are removed by the Qt deployment for Android.
This might be done by Gradle (I used ant before with the old version).
How can I prevent the deletion of the folder or copy files into the directory before the APK is finally built.
It requires the drawable and strings as application icon and name.
When merging commit 78f06f3 you introduced a new check for a variable PROJECT_VERSION
that isn't referenced anywhere else. If that variable isn't set, a build will fail with
CMake Error at /__w/***/qt-android-cmake/AddQtAndroidApk.cmake:106 (if):
if given arguments:
"STREQUAL" ""
That seems suboptimal.
I had to use set_property(TARGET mytarget PROPERTY VERSION "1"). Otherwise the version in the manifest was empty which led to an error.
Getting the following errors when attempting to add an APK project.
CMake Warning at qt-android-cmake/AddQtAndroidApk.cmake:170 (message):
Failed to determine ANDROID_STL_PREFIX value for ANDROID_STL=
Call Stack (most recent call first):
CMakeLists.txt:53 (add_qt_android_apk)
CMake Warning at qt-android-cmake/AddQtAndroidApk.cmake:190 (message):
ANDROID_STL () isn't a known shared stl library.You should consider setting
ANDROID_STL to c++_shared (like Qt).
Call Stack (most recent call first):
CMakeLists.txt:53 (add_qt_android_apk)
CMake Error at qt-android-cmake/AddQtAndroidApk.cmake:240 (string):
string sub-command REGEX, mode MATCH needs at least 5 arguments total to
command.
Call Stack (most recent call first):
CMakeLists.txt:53 (add_qt_android_apk)
CMake Error at qt-android-cmake/AddQtAndroidApk.cmake:246 (message):
Failed to parse ANDROID_TOOLCHAIN_PREFIX to get toolchain prefix and
version and tool prefix
Call Stack (most recent call first):
CMakeLists.txt:53 (add_qt_android_apk)
Installed everything with the online Qt installer app. Everything worked with Qt Creator.
Hi,
first of all, thank you for this project. It's great and has helped me a lot already!
One issue that came up though is the use of the LOCATION property for dependency targets (DEPENDS <...>), which is not guaranteed to hold the release binary (LOCATION_RELEASE). Thus, for some library targets, the debug version ends up in the APK with a release build of the app. (Which makes the app not run properly on a device.)
Side note: I've fixed it using generator expressions which will be evaluated at build time depending on the current build configuration. I'll see if i can get a pull request together.
My project heavy enough to run it with CMAKE_BUILD_TYPE=Debug
,
slow start, slow redraw and so on. So everyday I use RelWithDebInfo
mode,
but at the same time I need apk build in debug mode to run it via IDE without any issues.
So I need some new option to tell qt-android-cmake
that I need debug mode anyway,
even if CMAKE_BUILD_TYPE != Debug
:
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" AND NOT ARG_KEYSTORE)
set(QT_ANDROID_BUILD_TYPE --debug)
else()
set(QT_ANDROID_BUILD_TYPE --release)
endif()
After successfully building qtbase for arm64-v8a, i am currently trying to build a Qt example (qopenglwindow) using CMake for this same arch.
Here's my command :
cmake -G"MinGW Makefiles" ^
-DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%\build\cmake\android.toolchain.cmake ^
-DCMAKE_MAKE_PROGRAM=%ANDROID_NDK%\prebuilt\windows\bin\make ^
-DANDROID_NATIVE_API_LEVEL=android-24 ^
-DANDROID_ABI=arm64-v8a ^
-DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-4.9 ^
.
As you can see i used the cmake toolchain file existing in my NDK (i am not sure if it's a best practice, or if i explicitly need to use the file from qt-android-cmake repo).
So here's the result :
-- Android: Targeting API '24' with architecture 'arm64', ABI 'arm64-v8a', and processor 'aarch64'
-- Android: Selected GCC toolchain 'aarch64-linux-android-4.9'
-- The C compiler identification is GNU 4.9.0
-- The CXX compiler identification is GNU 4.9.0
-- Check for working C compiler: F:/Projects/Libs/android/android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc.exe
-- Check for working C compiler: F:/Projects/Libs/android/android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: F:/Projects/Libs/android/android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-g++.exe
-- Check for working CXX compiler: F:/Projects/Libs/android/android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:14 (find_package):
By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt5", but
CMake did not find one.
Could not find a package configuration file provided by "Qt5" with any of
the following names:
Qt5Config.cmake
qt5-config.cmake
Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
to a directory containing one of the above files. If "Qt5" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
See also "F:/Projects/Libs/Qt/qtbase/examples/opengl/qopenglwindow/CMakeFiles/CMakeOutput.log".
See also "F:/Projects/Libs/Qt/qtbase/examples/opengl/qopenglwindow/CMakeFiles/CMakeError.log".
Of course, my Qt5_DIR environment variable was already set before, but it seems it doesn't care about it.
I tried to manually add Qt5_DIR path inside CMakeCache.txt file (then Qt5Core_DIR, Qt5Widgets_DIR, etc...) and finally i had an other error about CMAKE_AUTORCC (yes there's also a qrc file in the project...)
Any ideas about what is going on ?
Thank you.
Hi,
The include files have moved in newer NDK releases (14 and newer: https://developer.android.com/ndk/guides/stable_apis.html), from platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h to sysroot/usr/include/android.
Is it OK to just change the path or are there other things that could go wrong with the build later?
Alex
Using Qt 5.14.1.
Before reaching the custom generated target, androiddeployqt
fails with No target architecture defined in json file.
Generated qtdeploy.json
{
"description": "This file is to be read by androiddeployqt",
"qt": "/usr/local/Qt-5.14.1",
"sdk": "/opt/android/sdk/",
"ndk": "/opt/android/sdk/ndk/",
"sdkBuildToolsRevision": "29.0.3",
"toolchain-prefix": "llvm",
"tool-prefix": "llvm",
"toolchain-version": "",
"ndk-host": "linux-x86_64",
"target-architecture": "armeabi-v7a",
"application-binary": "/home/santi/Programacion/Qt/HoraProA/android-build/android-build/libs/armeabi-v7a/libHoraProA_armeabi-v7a.so",
"android-package": "org.qtproject.HoraProA",
"android-app-name": "HoraProA",
"qml-root-path": "/home/santi/Programacion/Qt/HoraProA",
"stdcpp-path": "/opt/android/sdk/ndk//sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so",
"useLLVM": true,
"android-package-source-directory": "/home/santi/Programacion/Qt/HoraProA/android"
}
Generated android_deployment_settings.json
{
"_description": "This file is created by CMake to be read by androiddeployqt and should not be modified by hand.",
"application-binary": "HoraProA",
"architectures": {
},
"ndk": "/opt/android/sdk/ndk",
"ndk-host": "linux-x86_64",
"qml-root-path": "/home/santi/Programacion/Qt/HoraProA",
"qt": "/usr/local/Qt-5.14.1",
"sdk": "/opt/android/sdk",
"stdcpp-path": "/opt/android/sdk/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/",
"tool-prefix": "llvm",
"toolchain-prefix": "llvm",
"useLLVM": true
}
Hi Friend
Now, I have adapt your cmake with my own, but I can't change the icon of app. I have tried to make a dir named res , and add a icon.png. Then add the icon attribute to andrioidmainfest.xml. But it can't find it. In the binnary dir, I find the res, but it doesn't have the icon.png, Can you help me? Thanks a lot!
Since AndroidManifest.xml
is being generated I wonder how I can set an application icon. Is there a workflow for this already?
I think this is a syntax error.
Line 180 in AddQtAndroidApk.cmake
if(CMAKE_BUILD_TYPE AND ${CMAKE_BUILD_TYPE} STREQUAL "Debug" AND NOT ARG_KEYSTORE)
should be
if(CMAKE_BUILD_TYPE AND CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT ARG_KEYSTORE)
First of all, this doesn't work with newer SDK and NDK, since api-level.h changed its path and probably also format.
So I am using these:
Configure works quite OK, but when I try to compile stuff I get these errors:
[ 3%] Built target yaml-cpp_automoc
[ 4%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/node.cpp.o
[ 6%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/node_data.cpp.o
[ 7%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/nodebuilder.cpp.o
[ 8%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/nodeevents.cpp.o
[ 9%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/null.cpp.o
[ 10%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/ostream_wrapper.cpp.o
[ 12%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/parse.cpp.o
[ 13%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/parser.cpp.o
[ 14%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/regex_yaml.cpp.o
[ 15%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o
[ 17%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/scanscalar.cpp.o
[ 18%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/scantag.cpp.o
[ 19%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o
[ 20%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/simplekey.cpp.o
[ 21%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/singledocparser.cpp.o
[ 23%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/stream.cpp.o
[ 24%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/tag.cpp.o
[ 25%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/contrib/graphbuilder.cpp.o
[ 26%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/src/contrib/graphbuilderadapter.cpp.o
[ 28%] Building CXX object sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/yaml-cpp_automoc.cpp.o
[ 29%] Linking CXX shared library libyaml-cpp.so
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_so.o: No such file or directory
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtend_so.o: No such file or directory
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lm
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lc
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/convert.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitter.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/exp.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/node_data.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/ostream_wrapper.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/parser.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/regex_yaml.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanner.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanscalar.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanscalar.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scanscalar.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantag.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/scantoken.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/simplekey.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/singledocparser.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/stream.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: CMakeFiles/yaml-cpp.dir/src/tag.cpp.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: /opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a(eh_globals.o): requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
/media/android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: /opt/android-ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a(system_error.o): requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC
CMakeFiles/yaml-cpp.dir/src/binary.cpp.o:binary.cpp:function YAML::DecodeBase64(std::string const&): error: undefined reference to 'memset'
CMakeFiles/yaml-cpp.dir/src/binary.cpp.o:binary.cpp:function YAML::DecodeBase64(std::string const&): error: undefined reference to 'memset'
CMakeFiles/yaml-cpp.dir/src/convert.cpp.o:convert.cpp:function YAML::convert<bool>::decode(YAML::Node const&, bool&): error: undefined reference to 'memcmp'
CMakeFiles/yaml-cpp.dir/src/convert.cpp.o:convert.cpp:function YAML::convert<bool>::decode(YAML::Node const&, bool&): error: undefined reference to 'memcmp'
CMakeFiles/yaml-cpp.dir/src/convert.cpp.o:convert.cpp:function YAML::convert<bool>::decode(YAML::Node const&, bool&): error: undefined reference to '__dso_handle'
CMakeFiles/yaml-cpp.dir/src/directives.cpp.o:directives.cpp:function YAML::Directives::TranslateTagHandle(std::string const&) const: error: undefined reference to 'memcmp'
CMakeFiles/yaml-cpp.dir/src/directives.cpp.o:directives.cpp:function YAML::Directives::TranslateTagHandle(std::string const&) const: error: undefined reference to 'memcmp'
CMakeFiles/yaml-cpp.dir/src/emitfromevents.cpp.o:emitfromevents.cpp:function YAML::EmitFromEvents::OnSequenceEnd(): error: undefined reference to '__assert2'
CMakeFiles/yaml-cpp.dir/src/emitfromevents.cpp.o:emitfromevents.cpp:function YAML::EmitFromEvents::OnMapEnd(): error: undefined reference to '__assert2'
CMakeFiles/yaml-cpp.dir/src/emitfromevents.cpp.o:emitfromevents.cpp:function void std::deque<YAML::EmitFromEvents::State::value, std::allocator<YAML::EmitFromEvents::State::value> >::_M_push_back_aux<YAML::EmitFromEvents::State::value>(YAML::EmitFromEvents::State::value&&): error: undefined reference to 'memmove'
CMakeFiles/yaml-cpp.dir/src/emitfromevents.cpp.o:emitfromevents.cpp:function void std::deque<YAML::EmitFromEvents::State::value, std::allocator<YAML::EmitFromEvents::State::value> >::_M_push_back_aux<YAML::EmitFromEvents::State::value>(YAML::EmitFromEvents::State::value&&): error: undefined reference to 'memmove'
CMakeFiles/yaml-cpp.dir/src/emitfromevents.cpp.o:emitfromevents.cpp:function void std::deque<YAML::EmitFromEvents::State::value, std::allocator<YAML::EmitFromEvents::State::value> >::_M_push_back_aux<YAML::EmitFromEvents::State::value>(YAML::EmitFromEvents::State::value&&): error: undefined reference to 'memmove'
CMakeFiles/yaml-cpp.dir/src/emitter.cpp.o:emitter.cpp:function YAML::Emitter::FlowSeqPrepareNode(YAML::EmitterNodeType::value): error: undefined reference to '__assert2'
CMakeFiles/yaml-cpp.dir/src/emitter.cpp.o:emitter.cpp:function YAML::Emitter::FlowMapPrepareLongKey(YAML::EmitterNodeType::value): error: undefined reference to '__assert2'
CMakeFiles/yaml-cpp.dir/src/emitter.cpp.o:emitter.cpp:function _GLOBAL__sub_I_emitter.cpp: error: undefined reference to '__dso_handle'
CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o:emitterutils.cpp:function YAML::Exp::Blank(): error: undefined reference to '__dso_handle'
CMakeFiles/yaml-cpp.dir/src/emitterutils.cpp.o:emitterutils.cpp:function YAML::Exp::Blank(): error: undefined reference to '__dso_handle'
CMakeFiles/yaml-cpp.dir/src/ostream_wrapper.cpp.o:ostream_wrapper.cpp:function std::vector<char, std::allocator<char> >::_M_default_append(unsigned int) [clone .part.29]: error: undefined reference to 'memset'
CMakeFiles/yaml-cpp.dir/src/ostream_wrapper.cpp.o:ostream_wrapper.cpp:function std::vector<char, std::allocator<char> >::_M_default_append(unsigned int) [clone .part.29]: error: undefined reference to 'memset'
CMakeFiles/yaml-cpp.dir/src/ostream_wrapper.cpp.o:ostream_wrapper.cpp:function YAML::ostream_wrapper::write(std::string const&): error: undefined reference to 'memmove'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/atexit_arm.cc:35: error: undefined reference to '__cxa_atexit'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/del_op.cc:46: error: undefined reference to 'free'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_alloc.cc:105: error: undefined reference to 'malloc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:761: error: undefined reference to 'pthread_mutex_lock'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:791: error: undefined reference to 'pthread_mutex_unlock'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_alloc.cc:153: error: undefined reference to 'free'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:761: error: undefined reference to 'pthread_mutex_lock'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:791: error: undefined reference to 'pthread_mutex_unlock'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_alloc.cc:163: error: undefined reference to 'malloc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:761: error: undefined reference to 'pthread_mutex_lock'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:791: error: undefined reference to 'pthread_mutex_unlock'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_alloc.cc:210: error: undefined reference to 'free'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:761: error: undefined reference to 'pthread_mutex_lock'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:791: error: undefined reference to 'pthread_mutex_unlock'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:726: error: undefined reference to 'pthread_key_delete'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_globals.cc:86: error: undefined reference to 'free'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:732: error: undefined reference to 'pthread_getspecific'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:732: error: undefined reference to 'pthread_getspecific'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_globals.cc:139: error: undefined reference to 'malloc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:738: error: undefined reference to 'pthread_setspecific'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:720: error: undefined reference to 'pthread_key_create'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/../libgcc/unwind-pe.h:257: error: undefined reference to 'abort'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/../libgcc/unwind-pe.h:120: error: undefined reference to 'abort'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/../libgcc/unwind-pe.h:88: error: undefined reference to 'abort'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/eh_terminate.cc:48: error: undefined reference to 'abort'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/guard.cc:317: error: undefined reference to 'syscall'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/guard.cc:376: error: undefined reference to 'syscall'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/guard.cc:416: error: undefined reference to 'syscall'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/new_op.cc:49: error: undefined reference to 'malloc'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/pure.cc:49: error: undefined reference to 'write'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/pure.cc:56: error: undefined reference to 'write'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/tinfo.cc:46: error: undefined reference to 'strcmp'
basic_file.cc:120: error: undefined reference to 'write'
basic_file.cc:121: error: undefined reference to '__errno'
basic_file.cc:240: error: undefined reference to 'fopen'
basic_file.cc:275: error: undefined reference to '__errno'
basic_file.cc:277: error: undefined reference to 'fclose'
basic_file.cc:278: error: undefined reference to '__errno'
basic_file.cc:292: error: undefined reference to 'read'
basic_file.cc:293: error: undefined reference to '__errno'
basic_file.cc:154: error: undefined reference to 'writev'
basic_file.cc:327: error: undefined reference to 'lseek'
basic_file.cc:342: error: undefined reference to 'ioctl'
basic_file.cc:353: error: undefined reference to 'poll'
basic_file.cc:370: error: undefined reference to 'fstat'
basic_file.cc:372: error: undefined reference to 'lseek'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/basic_ios.h:276: error: undefined reference to '__sF'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/locale_facets.h:1100: error: undefined reference to 'memcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:263: error: undefined reference to 'strlen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:263: error: undefined reference to 'strlen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:263: error: undefined reference to 'strlen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:60: error: undefined reference to 'setlocale'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:66: error: undefined reference to 'strcmp'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:83: error: undefined reference to 'vsprintf'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:68: error: undefined reference to 'strlen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:70: error: undefined reference to 'memcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:71: error: undefined reference to 'setlocale'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:83: error: undefined reference to 'vsprintf'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/c++locale.h:90: error: undefined reference to 'setlocale'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:275: error: undefined reference to 'memcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/locale_facets.h:1100: error: undefined reference to 'memcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:267: error: undefined reference to 'memchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:267: error: undefined reference to 'memchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:267: error: undefined reference to 'memchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:267: error: undefined reference to 'memchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:712: error: undefined reference to 'pthread_once'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/arm-linux-androideabi/bits/gthr-default.h:712: error: undefined reference to 'pthread_once'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:195: error: undefined reference to 'getc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:195: error: undefined reference to 'getc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:200: error: undefined reference to 'ungetc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:200: error: undefined reference to 'ungetc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:161: error: undefined reference to 'fflush'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:161: error: undefined reference to 'fflush'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:179: error: undefined reference to 'fseek'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:180: error: undefined reference to 'ftell'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:179: error: undefined reference to 'fseek'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:180: error: undefined reference to 'ftell'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:228: error: undefined reference to 'getwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:228: error: undefined reference to 'getwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:228: error: undefined reference to 'getwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:233: error: undefined reference to 'ungetwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:233: error: undefined reference to 'ungetwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:238: error: undefined reference to 'putwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:222: error: undefined reference to 'fwrite'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:211: error: undefined reference to 'fread'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:205: error: undefined reference to 'putc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:146: error: undefined reference to 'fflush'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:238: error: undefined reference to 'putwc'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:146: error: undefined reference to 'fflush'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:179: error: undefined reference to 'fseek'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:180: error: undefined reference to 'ftell'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:179: error: undefined reference to 'fseek'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/ext/stdio_sync_filebuf.h:180: error: undefined reference to 'ftell'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:346: error: undefined reference to 'wmemcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:346: error: undefined reference to 'wmemcpy'
time_members.cc:46: error: undefined reference to 'setlocale'
time_members.cc:59: error: undefined reference to 'strftime'
time_members.cc:152: error: undefined reference to 'wcsftime'
time_members.cc:152: error: undefined reference to 'wcsftime'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:334: error: undefined reference to 'wcslen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:334: error: undefined reference to 'wcslen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:334: error: undefined reference to 'wcslen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:334: error: undefined reference to 'wcslen'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:346: error: undefined reference to 'wmemcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:350: error: undefined reference to 'wmemset'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:346: error: undefined reference to 'wmemcpy'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:350: error: undefined reference to 'wmemset'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:350: error: undefined reference to 'wmemset'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:338: error: undefined reference to 'wmemchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:338: error: undefined reference to 'wmemchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:338: error: undefined reference to 'wmemchr'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:338: error: undefined reference to 'wmemchr'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/src/c++11/system_error.cc:61: error: undefined reference to 'strerror'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/src/c++11/system_error.cc:46: error: undefined reference to 'strerror'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:350: error: undefined reference to 'wmemset'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:342: error: undefined reference to 'wmemmove'
/tmp/ndk-user/tmp/gnu-libstdc++/static-armeabi-v7a-4.9/include/bits/char_traits.h:342: error: undefined reference to 'wmemmove'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:67: error: undefined reference to 'fwrite'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:71: error: undefined reference to 'fputs'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:72: error: undefined reference to 'fwrite'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:49: error: undefined reference to 'fwrite'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:86: error: undefined reference to 'fputs'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:87: error: undefined reference to 'fputc'
/s/ndk-toolchain/src/gcc/gcc-4.9/libstdc++-v3/libsupc++/vterminate.cc:90: error: undefined reference to '__sF'
c++locale.cc:76: error: undefined reference to 'strtod'
c++locale.cc:145: error: undefined reference to 'strtod'
c++locale.cc:206: error: undefined reference to 'sscanf'
c++locale.cc:240: error: undefined reference to 'strcmp'
codecvt_members.cc:80: error: undefined reference to 'wcrtomb'
codecvt_members.cc:65: error: undefined reference to 'wcrtomb'
codecvt_members.cc:125: error: undefined reference to 'mbrtowc'
codecvt_members.cc:190: error: undefined reference to 'mbrtowc'
collate_members.cc:45: error: undefined reference to 'strcoll'
collate_members.cc:53: error: undefined reference to 'strxfrm'
collate_members.cc:61: error: undefined reference to 'wcscoll'
collate_members.cc:69: error: undefined reference to 'wcsxfrm'
ctype_configure_char.cc:43: error: undefined reference to '_ctype_'
ctype_members.cc:90: error: undefined reference to 'wctype'
ctype_members.cc:66: error: undefined reference to 'wctype'
ctype_members.cc:75: error: undefined reference to 'wctype'
ctype_members.cc:93: error: undefined reference to 'wctype'
ctype_members.cc:103: error: undefined reference to 'towupper'
ctype_members.cc:110: error: undefined reference to 'towupper'
ctype_members.cc:118: error: undefined reference to 'towlower'
ctype_members.cc:125: error: undefined reference to 'towlower'
ctype_members.cc:141: error: undefined reference to 'iswctype'
ctype_members.cc:141: error: undefined reference to 'iswctype'
ctype_members.cc:141: error: undefined reference to 'iswctype'
ctype_members.cc:141: error: undefined reference to 'iswctype'
ctype_members.cc:209: error: undefined reference to 'wctob'
ctype_members.cc:234: error: undefined reference to 'wctob'
ctype_members.cc:225: error: undefined reference to 'wctob'
ctype_members.cc:248: error: undefined reference to 'wctob'
ctype_members.cc:260: error: undefined reference to 'btowc'
cp-demangle.c:3745: error: undefined reference to 'realloc'
cp-demangle.c:4008: error: undefined reference to 'sprintf'
cp-demangle.c:3247: error: undefined reference to 'strcmp'
cp-demangle.c:4008: error: undefined reference to 'sprintf'
cp-demangle.c:4008: error: undefined reference to 'sprintf'
cp-demangle.c:4008: error: undefined reference to 'sprintf'
cp-demangle.c:4467: error: undefined reference to 'strncmp'
cp-demangle.c:5782: error: undefined reference to 'strncmp'
/s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/arm/lib1funcs.S:1337: error: undefined reference to 'raise'
collect2: error: ld returned 1 exit status
sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/build.make:874: recipe for target 'sdk/yaml-cpp/libyaml-cpp.so' failed
make[2]: *** [sdk/yaml-cpp/libyaml-cpp.so] Error 1
CMakeFiles/Makefile2:320: recipe for target 'sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/all' failed
make[1]: *** [sdk/yaml-cpp/CMakeFiles/yaml-cpp.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
These files crtbegin_so.o and crtend_so.o exist on multiple places, but even if I run compiler myself by hand and provide exact path with -l option, it's not working and still say it can't find them.
What is wrong? I am cross compiling on Linux x86_64 for arm
When deploying as documented, I get the linking error
/usr/local/Android/android-ndk-r10e/toolchains/arm-linux-
androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-
androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot open
crtbegin_so.o: No such file or directory
If I create a stand-alone toolchain and add
-DANDROID_STANDALONE_TOOLCHAIN=<path_to_standalone_toolchain>, the issue is solved. To me this seems very odd, IMHO you should not need both the NDK and a stand-alone toolchain, one of them should be sufficient. Any explanation?
By the way, it would be cool if qtdeploy would also support a stand-alone toolchain, so that the full NDK is no longer required.
How can one get ndk_gdb to perform debugging on an android target? As per the ndk_gdb online help it requires the build process to use ndk_build script.
Is there any alternative way to perform breakpoint debug. Qt creator has a few options also but I do not want to rely on it for compilation.
I have qt cpp code with qml frontend.
I get the following error, and so the script fails....
Detected Android SDK build tools version 0.0.0
CMake Error at android/AddQtAndroidApk.cmake:161 (string):
string sub-command REGEX, mode MATCH needs at least 5 arguments total to
command.
Call Stack (most recent call first):
CMakeLists.txt:100 (add_qt_android_apk)
This looks like its looking in the toolchain folder which for me has the following:
aarch64-linux-android-4.9
arm-linux-androideabi-4.9
llvm
renderscript
x86-4.9
The following warning with the cmake script
CMake Deprecation Warning at android/AddQtAndroidApk.cmake:2 (cmake_policy):
The OLD behavior for policy CMP0026 will be removed from a future version
of CMake.The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
When using your beautiful and indispensable toolchain, I get the following warnings.
CMake Deprecation Warning at /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:69 (message):
The CMAKE_FORCE_C_COMPILER macro is deprecated. Instead just set
CMAKE_C_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
/home/rove/code/qt-android-cmake/toolchain/android.toolchain.cmake:1123 (CMAKE_FORCE_C_COMPILER)
/usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
CMakeLists.txt:3 (project)
CMake Deprecation Warning at /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:83 (message):
The CMAKE_FORCE_CXX_COMPILER macro is deprecated. Instead just set
CMAKE_CXX_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
/home/rove/code/qt-android-cmake/toolchain/android.toolchain.cmake:1135 (CMAKE_FORCE_CXX_COMPILER)
/usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include)
CMakeLists.txt:3 (project)
Later, when using the APK macro, I also get
CMake Deprecation Warning at /home/rove/code/qt-android-cmake/AddQtAndroidApk.cmake:2 (cmake_policy):
The OLD behavior for policy CMP0026 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
src/CMakeLists.txt:74 (include)
These seem to be harmless for now, but might break stuff in the future.
So far my experience with Android has been that if you use anything too new or too old, everything breaks.
I am not sure if this is a bug if this CMake module but the library in the "libs" folder has no more debug symbols.
Since different version of qt use different version of gradle in the src/
folder, would it be possible to use our own gradle.build.in
script.
'com.android.tools.build:gradle:3.2.0'
'com.android.tools.build:gradle:3.5.0'
'com.android.tools.build:gradle:3.6.0'
I tried just to update the script to 3.6 but build break with Qt 5.13.
Would you consider a PR that allow user to provide a build.gradle.in
in the same way as AndroidManifest.xml.in
?
I get the following error when building my Qt app for Android:
Using 8 worker leases.
Creating configuration compile
Creating configuration apk
Creating configuration provided
Creating configuration wearApp
Creating configuration annotationProcessor
Creating configuration androidTestCompile
Creating configuration androidTestApk
Creating configuration androidTestProvided
Creating configuration androidTestWearApp
Creating configuration androidTestAnnotationProcessor
Creating configuration testCompile
Creating configuration testApk
Creating configuration testProvided
Creating configuration testWearApp
Creating configuration testAnnotationProcessor
Creating configuration debugCompile
Creating configuration debugApk
Creating configuration debugProvided
Creating configuration debugWearApp
Creating configuration debugAnnotationProcessor
Creating configuration testDebugCompile
Creating configuration testDebugApk
Creating configuration testDebugProvided
Creating configuration testDebugWearApp
Creating configuration testDebugAnnotationProcessor
Creating configuration releaseCompile
Creating configuration releaseApk
Creating configuration releaseProvided
Creating configuration releaseWearApp
Creating configuration releaseAnnotationProcessor
Creating configuration testReleaseCompile
Creating configuration testReleaseApk
Creating configuration testReleaseProvided
Creating configuration testReleaseWearApp
Creating configuration testReleaseAnnotationProcessor
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.IllegalStateException: buildToolsVersion is not specified.
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:645)
at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:608)
at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:605)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:120)
at com.android.build.gradle.BasePlugin.lambda$createTasks$1(BasePlugin.java:603)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy14.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:76)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$000(LifecycleProjectEvaluator.java:33)
at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:53)
at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:50)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:599)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:125)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuildAction.execute(DefaultGradleLauncher.java:233)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuildAction.execute(DefaultGradleLauncher.java:230)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:160)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:31)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:244)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:217)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:33)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:174)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:31)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:108)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
BUILD FAILED
Total time: 2.671 secs
FAILURE: Build failed with an exception.
* Where:
Build file '/bla/fairytale/buildandroidarmeabi-v7a/build.gradle' line: 39
* What went wrong:
A problem occurred evaluating root project 'buildandroidarmeabi-v7a'.
> Invalid revision:
This is the generated build.gradle file in the build directory:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
android {
/*******************************************************
* The following variables:
* - androidBuildToolsVersion,
* - androidCompileSdkVersion
* - qt5AndroidDir - holds the path to qt android files
* needed to build any Qt application
* on Android.
*
* are defined in gradle.properties file. This file is
* updated by QtCreator and androiddeployqt tools.
* Changing them manually might break the compilation!
*******************************************************/
compileSdkVersion androidCompileSdkVersion.toInteger()
buildToolsVersion androidBuildToolsVersion
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
res.srcDirs = [qt5AndroidDir + '/res', 'res']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
lintOptions {
abortOnError false
}
}
Hello my resources arent work in android apk it doesnt gve error but added icons and etc are not showed except syle files
styles/Devsion.qss styles/Hookmark.qss styles/SyNet.qss icons/backicon.png icons/back-icon2.svgThis works:
QFile styleFile(":/styles/SyNet.qss");
styleFile.open(QIODevice::ReadOnly);
QString style(styleFile.readAll());
a.setStyleSheet(style);
This doesn't work:
ui->backButton->setIcon(QIcon(":/icons/back-icon2.svg"));
Any ideas?
Setting QT_ANDROID_APP_NAME from CMakeLists.txt isn't working for some reason.
How about generating android app bundles ?
Based on this comment
I'll reply it here:
This makes my build fail with
CMake Error at /__w/***/qt-android-cmake/AddQtAndroidApk.cmake:106 (if):
if given arguments:
"STREQUAL" ""
I see no other reference to PROJECT_VERSION anywhere in the code...
As I saw in the AddQtAndroidApk.cmake
, the fix could be trivial, and I'll make an PR with it ๐
If I change one line of C++ code in my project and then run
ninja project_apk
it takes 39s, gradle output looks like this:
โฏ grep Took /tmp/apk-build.log | grep -v 'Took 0'
:mergeDebugAssets (Thread[Execution worker for ':' Thread 30,5,main]) completed. Took 3.964 secs.
:mergeDebugJniLibFolders (Thread[Execution worker for ':' Thread 30,5,main]) completed. Took 15.387 secs.
:mergeDebugNativeLibs (Thread[Execution worker for ':' Thread 30,5,main]) completed. Took 15.046 secs.
:stripDebugDebugSymbols (Thread[Execution worker for ':' Thread 30,5,main]) completed. Took 3.243 secs.
as you can see the most time is spend during mergeDebug* tasks.
In my ./project/project-arm64-v8a/libs/arm64-v8a/ there are 91 libraries from Qt,
one my library and libc++_shared
.
So the most of the time I supposed is spend during handling of Qt libraries.
The most strange part is that Qt libraries recreated every build.
I disable this:
@@ -303,8 +306,8 @@ macro(add_qt_android_apk TARGET SOURCE_TARGET)
DEPENDS ${SOURCE_TARGET}
${QT_ANDROID_PRE_COMMANDS}
# it seems that recompiled libraries are not copied if we don't remove them first
- COMMAND ${CMAKE_COMMAND} -E remove_directory ${QT_ANDROID_APP_BINARY_DIR}/libs/${ANDROID_ABI}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${QT_ANDROID_APP_BINARY_DIR}/libs/${ANDROID_ABI}
+# COMMAND ${CMAKE_COMMAND} -E remove_directory ${QT_ANDROID_APP_BINARY_DIR}/libs/${ANDROID_ABI}
+# COMMAND ${CMAKE_COMMAND} -E make_directory ${QT_ANDROID_APP_BINARY_DIR}/libs/${ANDROID_ABI}
COMMAND ${CMAKE_COMMAND} -E copy ${QT_ANDROID_APP_PATH} ${QT_ANDROID_APP_BINARY_DIR}/libs/${ANDROID_ABI}
COMMAND ${QT_ANDROID_QT_ROOT}/bin/androiddeployqt
--verbose
and build time changed to (editing the same file and rebuild project_apk
):
โฏ grep Took /tmp/apk-build2.log | grep -v 'Took 0'
:mergeDebugAssets (Thread[Execution worker for ':' Thread 13,5,main]) completed. Took 3.985 secs.
:mergeDebugJniLibFolders (Thread[Execution worker for ':' Thread 13,5,main]) completed. Took 3.987 secs.
:mergeDebugNativeLibs (Thread[Execution worker for ':' Thread 13,5,main]) completed. Took 3.994 secs.
:javaPreCompileDebug (Thread[Execution worker for ':' Thread 12,5,main]) completed. Took 12.674 secs.
So total gradle
time changed from 39s to 14s.
I read comment:
it seems that recompiled libraries are not copied if we don't remove them first
But my libproject_arm64-v8a.so
updated even after commenting this lines,
while "Qt libraries" not updated, and this is good.
First of all thanks for the work.
Using android-ndk-r10.
For armabi-v7a e.g. strip command is:
C:\work\android-ndk-r13b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip.exe
For x86:
C:\work\android-ndk-r13b\toolchains\x86-4.9\prebuilt\windows-x86_64\bin\i686-linux-android-strip.exe
Note how in the first case the folder arm-linux-andoideabi-4.9 and arm-linux-androideabi-strip.exe
have matching roots ("arm-linux-androideabi"). For x86 the roots are "x86" and "i686-linux-android" i.e. different.
Oddly enough CMAKE_STRIP is set correctly in both cases. However, when trying to build for x86 got the warning:
Command does not exist: C:/work/android-ndk-r10/toolchains/i686-linux-android-4.8/prebuilt/windows-x86_64/bin/i686-linux-android-strip.exe
Fix is to add an additional define "ANDROID_TOOLCHAIN_PREFIX" which the user can set (for x86) or let it default to ANDROID_TOOLCHAIN_MACHINE_NAME for e,g, armeabi-v7a.
Have attached the two files I changed. Tested for x86 and armeabi-v7a only.
First of all, great project. I've been looking for something like this all day.
However I am getting an error since it expects the architecture i686 which I did not specify. It should rather use the directory "x86-4.9" from the specified architecture in the toolchains path. As you can see I specified -DANDROID_ABI="x86".
http://stackoverflow.com/questions/38945267/addqtandroidapk-detects-wrong-target-architecture
Maybe I did something wrong in my configuration. How is the path determined and which variables do I have to set? I am trying to figure out if this is a bug or I forgot something.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.