Я использую BatteryTech для своей абстракции платформы, и структура моего проекта выглядит следующим образом:
На моем ПК:
gamename - содержит только общий код
gamename-android - содержит в основном код BatteryTech для Android и конфигурацию Android, сборщики указывают на проект gamename для общего кода
gamename-win32 - для сборки в Windows используется код из проекта gamename
На моем Mac:
gamename - содержит только общий код
gamename-ios - сборка iPhone / iPad, импорт общего кода
gamename-osx - встроенная сборка OSX. импортирует общий код.
И я использую SVN для обмена между моим ПК и Mac. Мои единственные реальные проблемы - когда я добавляю классы в общую кодовую базу в Windows, а затем обновляюсь на Mac, чтобы вытащить их из SVN. У XCode нет способа автоматически добавлять их в проект без сценариев, поэтому мне приходится каждый раз извлекать их вручную, что является болью, но это не конец света.
Все это поставляется с BatteryTech, так что его легко понять, как только вы его получите.