We have a complex C ++ codebase oriented to several mobile platforms. Android (2.1+), iPhone (4+), Windows CE (4.2 to 6.5) and ), Bada (2.0+) almost works, and if something comes from a new C ++ / CX thing most likely, Windows Phone (8+) will be added. Plus a test version on Win32 and a service application on Win64 that shares some code. We have also tried to compile unit tests on Linux and questions have already arisen (too small business volume so far, but this may change) to make it work on some other Linux platforms.
We are currently compiling the code using our own tools for each platform. Each one is quite complex and has some hacks inside or around it to achieve a reasonable one-click creation. And for Bada, we have not yet decided to build outside the Samsung Eclipse, which we will need to do for production.
While this is working, it is becoming a maintenance problem. The biggest problem right now is building the iPhone, because unlike Visual Studio project files and simple make files, it's impossible to manually add / delete / rename files in an Xcode project, and only two people have MacOS boxen and any experience with Xcode ( while everyone has Windows and knows Visual Studio). We also need to create some makefiles for the Bada target (this is a simple GNU text binding, so everything that can be combined with them should be done), and I would not get rid of some of the kludges in the Android assembly: fix the processing error dependencies when creating under cygwin, some hacks on top of the ant build script and shell shell for the massage manifest and hold it all together.
So, I'm looking for tips on how to unify the build process for this set of different platforms.
- It is absolutely necessary to handle the creation of iPhone and Bada executable files and the built-in part of the Android assembly (because no one is testing all three platforms separately).
- Must handle a large project consisting of several shared libraries, one main binary, one test binary for the same platforms and some auxiliary binaries created only on some platforms (well, currently only for Win32).
- Should be able to generate the assembly configuration header and Java file with the version from the version control system and some user-dependent variables, since we do 18 and count slightly different assemblies for different clients.
- And, of course, it should automatically process dependencies (header files) and, as a rule, be reliable.
For other things, I am ready to crack any flaws, but I obviously would like to keep the amount of scotch tape and spit to a minimum, so it should:
- Being able to integrate with Visual Studio, Eclipse, and Xcode is enough so that each environment can run the assembly, load the assembly product into the appropriate target, and attach a debugger to it.
- To be able to create Java and invoke custom packaging tools for Android, so we don’t need to crack the ant build script, which Google has changed for free and incompatible twice in the last two years (and the old SDK cannot be downloaded).
- To be able to install various data files and call random packages and random other scripts and tools and so on, so it does not need to be mixed with too large a shell script.
We still started trying CMake (they didn’t have much time, so they didn’t get far, but it will be something short), and we also thought about SCons . However, I already tried building with SCons for Windows CE several years ago, but since it generates type projects for Visual Studio and they do not work for embedded platforms in VS2005, I gave up. CMake can generate its own makefiles, but CE requires a custom, outdated bit, branch . Therefore, I would like to ask if there are any other tools that we could consider, or any known stumbling blocks with these tools that we should be aware of .
Updates: I found instructions for Android binaries in several places and a pixellight even cmake script to generate apk by directly invoking packaging tools. This shell script is also displayed. The use of the iPhone appears to be documented here.