![]() |
Build SDL2 Demo using CMake for Android | ![]() |
Laz-Roc
![]() |
![]() |
Hey, I need another help with SDL2 + CMake for Android. I almost got my cross-build demo working - Linux, Mac, iOS, and Windows are running, but Android is still somewhat draconian.
What works: A little test program based on the android-project within the SDL2 sources. What I try: Build this same demo with CMake to simplify cross-platform development, ... but first I need to build SDL2 with CMake: For that project I rely on the android-cmake toolchain, and its very outdated boost tutorial. Anyway, it works somehow and I only have to figure out the build process. Now, I try to apply it for my project, creating the CMakeLists.txt file based on the boost tutorial and modify it based on the Android.mk file inside the SDL package. This is my CMakeLists.txt so far:
Looks to simple to work out of the box, and unfortunately it is true. The generation of the makefiles works, but the actual make process fails:
There's a similar thread on in this forum, but I don't get it. Btw. there's a confusing thread in the thread. Okay, that's where I stuck. Any help is welcome to get it done, thanks. Michael |
||||||||||||||
|
![]() |
Build SDL2 Demo using CMake for Android | ![]() |
Eric Wing
Guest
![]() |
![]() |
On 11/11/13, Laz-Roc wrote:
Hi Michael, This won't directly solve your problem, but will give you more information on how to use Android-CMake, and more generally, the Android NDK build chain, in non-trivial Android projects with dependencies. I have a sample repository for an Android Hello World program that uses ALmixer. ALmixer uses CMake to build (consider it your SDL proxy). I use my own fork of Android-CMake which contains fixes to use the latest NDKs, as well as handle multiple architectures (arm, armv7, x86). (Note that this example compiles ALmixer without SDL dependencies and instead uses a new experimental native Android OpenSL ES decoder backend my team and I have been working on so it won't directly show you how to deal with SDL.) Additionally, OpenAL-Soft is a dependency that ALmixer depends on, though this uses its own supplied Makefile system. Once these components are built as dynamic libraries, the final Hello World app build process relies on the official NDK module system to find ALmixer and OpenAL and build appropriately. All of this is strung together by some Perl scripts. The README.txt contains a lot of information on how to setup things. Android NDK development is really painful so take your time on this. Don't expect to be able to grasp everything in 10 minutes. The repository can be found at: https://bitbucket.org/ewing/hello-android-almixer Hope this helps, Eric -- Beginning iPhone Games Development http://playcontrol.net/iphonegamebook/ _______________________________________________ SDL mailing list http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org |
||||||||||||
|
![]() |
![]() |
![]() |
![]() |
Laz-Roc
![]() |
![]() |
Have been away for awhile, but I'm back to tackle that Android + CMake problem again.
Well, I think I've been successful building a static SDL2 library with CMake, but wasn't able to build an app so I don't know if it's working. Vice versa, I couldn't build a static library with the provided SDL2 README, but a demo with a shared library. I'd like to build a shared library, anyway. So I slightly modified my CMakeLists.txt to building a shared library by adding the SHARED tag. Again, it creates the makefiles, and builds the object files. But I don't know how to solve the undefined reference error. Here are some of the errors (I stripped similar errors; here is the full error message):
Thank you for any ideas. Michael |
||||||||||||
|
![]() |
Build SDL2 Demo using CMake for Android | ![]() |
Alvin Beach
Guest
![]() |
![]() |
I haven't tried using cmake, but you might need to link the math library? I see undefined reference to sqrt, atan2, ceil, etc. Perhaps setup CMakeLists.txt to emit '-lm'.
May not solve all the undefined references, but get rid of a few. HTH, Alvin On Nov 23, 2013 2:58 PM, "Laz-Roc" wrote:
|
||||||||||||
|