I'm now attempting to build a simple SDL2 Android application with CMake's built-in Android support (uses nvidia tegra nsight for visual studio 2010)
SDL2-2.0.3 does not appear to have a NativeActivity example so I'm attempting to use its android-project folder that includes "SDL2-2.0.3\android-project\src\org\libsdl\app\SDLActivity.java" instead. I'm able to compile my libpemDemos.so project with SDL2 code this way for armabi-v7a I also compiled libSDL2.so for armabi-v7a using ndk-build (not nvidia tegra nsight), and I'm able to reference it from my pemDemos.vcxproj I verified my pemDemos.vcxproj linker step does includes this: -L"[path]/SDL2-2.0.3/libs/armeabi-v7a" "-lSDL2" However, I'm getting a linker error when I try to add SDL_android_main.c to my build: 1> pemDemos.dir/Debug/SDL_android_main.o: In function `Java_org_libsdl_app_SDLActivity_nativeInit(_JNIEnv*, _jclass*, _jobject*)': 1> [path]\SDL2-2.0.3\src\main\android\SDL_android_main.c(23): undefined reference to `SDL_Android_Init(_JNIEnv*, _jclass*)' 1>collect2.exe : error : ld returned 1 exit status If I comment out the following one line then I can build my libpemDemos.so again: SDL_Android_Init(env, cls); However that of course fails when I try to run it. I don't understand why the linker doesn't see `SDL_Android_Init(_JNIEnv*, _jclass*)'. I have "-lSDL2" (and I know the linker is finding libSDL.so because it gives an error if I change vcxproj settings to do "-lSDLzzz" instead of "-lSDL"). Plus I even verified that libSDL2.so has SDL_Android_Init(): >readelf -Ws [path]\SDL2-2.0.3\libs\armeabi-v7a\libSDL2.so | grep SDL_Android_Init 216: 0002f60d 332 FUNC GLOBAL DEFAULT 8 SDL_Android_Init So why doesn't my linker step find SDL_Android_Init()? thank you for any leads On Mon, Aug 24, 2015 at 8:20 PM, Peter List <pem.l...@gmail.com> wrote: > Per Brad's suggestion, I removed this line from my CMakeLists.txt: > > add_library(${PROJECT_NAME} SHARED ${SRC_LIST}) > > And I added these lines: > > set(CMAKE_ANDROID_GUI TRUE) > set(CMAKE_ANDROID_API 19) # Kindle Fire HD 6 > set(CMAKE_ANDROID_API_MIN 19) # Kindle Fire HD 6 > add_executable(${PROJECT_NAME} ${SRC_LIST}) > > I am now able to generate a Visual Studio 2010 pemDemos.sln that includes > a pemDemos.vcxproj with a configuration properties section "Ant Built". > From inside Visual Studio, I'm able to build an APK and then ctrl+F5 to run > it on my device. > > Unfortunately, cmake did not generate AndroidManifest.xml, so I had to > supply my own using the aforementioned execute_process() with android.bat. > > At this point my app just displays a "Hello World, PemActivity" message > that it gets from "build-android\android\res\layout\main.xml". So it's not > using "android_native_app_glue.c,h" to point to my "main.cpp" code in > "libpemDemos.so" yet. So maybe cmake doesn't do that part automatically > for me? I also don't see a tutorial or simple hello world demo project for > this... However, I can at least use AndroidNativeApp.vcxproj as a > reference. > > thank you & best regards > > > > > > > > > > > > On Mon, Aug 24, 2015 at 9:49 AM, Brad King <brad.k...@kitware.com> wrote: > >> On 08/23/2015 04:44 PM, Peter List wrote: >> > How do I tell cmake to include "Ant Build" in my vcxproj, so that >> > it will package my project into an APK? I can generate vcxproj >> > that builds a Tegra-Android *.so file, but it does not build me >> > an APK, and my vcxproj is missing the "Ant Build" property section. >> >> You need to set the ANDROID_GUI target property on an exe: >> >> http://www.cmake.org/cmake/help/v3.3/prop_tgt/ANDROID_GUI.html >> >> Additional settings have been added in post-3.3 development: >> >> VS: Add more Nsight Tegra generator Android property settings >> http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8c0afaf4 >> >> -Brad >> >> >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers