(25-06-2012 22:45)sigLuca ha scritto: Tu hai creato due progetti, uno VS ed uno Xcode.
Entrambi i progetti condividevano gli stessi sorgenti e headers giusto? Magari in un repository comune?
Perché se questa soluzione funzionava, poi hai optato per CMake?
Ho scelto CMake un po' con il sogno segreto di poter avere la build per tutte le piattaforme basata su quello. Purtroppo con iOS sembra un po' troppo difficile liberarsi da Xcode, per cui il sogno e' rimasto tale.
Per Android e OS X, invece il mio partner ha usato SCons (fatto tutto lui, non mi lamento 8). Quindi possiamo generare degli eseguibili OS X con la build SCons, senza Xcode ! Per iOS non ci abbiamo provato, ma sicuramente sarebbe una cosa piu' dolorosa e forse insostenibile nel tempo.
L'unico problema e' che SCons non credo generi progetti e soluzioni per VS.. e quindi continuo ad usare CMake per PC, il quale appunto permette di dire "prendi tutti i sorgenti in
src e gli include in
include e fammici il progetto", oppure gli si puo' dire di creare un makefile, nel caso uno non voglia usare neanche VS !
Se uno punta pero' solo a VS e iOS.. allora l'utilita' pratica viene meno, perche' tutto sommato il progetto Xcode comunque va sempre costruito a mano e fare lo stesso per VS non e' la fine del mondo.
Citazione:Altra cosa: usi CVS o qualcosa del genere per il codice?
Usavo svn.. ma poi siamo passati a hg + svn. Ovvero c'e' un repository hg per i sorgenti ed uno svn per gli assets. Il repo hg e' configurato per gestire il repo svn come un
sotto-repository e quindi lavorano in sincronia (
blog post sulla cosa).
E' una cosa abbastanza complessa e che ti
sconsiglio.. e non lo avrei fatto da me senza l'aiuto del mio solito partner, che in queste cose ci sguazza bene.
Riguardo alle alternative:
- CVS: antico, arcaico, da dimenticare
-
SVN: sucessore di CVS, fa il suo dovere, ma non e' ideale per chi fa molto branching e merging
- GIT (
video): ideale per chi fa branching e merging, al giorno d'oggi ormai anche user friendly (e' un version control distributed.. ovvero funziona tranquillamente in locale, senza bisogno di un server)
-
HG (Mercurial): molto simile a GIT come architettura, forse meno performante
-
Perforce: non-free ma e' lo standard nel gamedev professionale ed oltre (si usa anche internamente in Google)
Noi usiamo hg + svn perche' volevamo a flessibilita' di hg.. ovvero la capacita' di lavorare con branches (senza i casini di svn).. ma allo stesso tempo, avendo parecchi dati binari, hg da solo non bastava.
La ragione e' che hg/git, essendo distribuiti, mantengono
tutta la storia di tutti i files in locale. La cosa va bene per i files di testo tipo sorgenti.. ma se uno ha una PNG di 10 MB, modifica un pixel, risalva e committa.. quel file non essendo "diffabile" fa crescere il repository di altri 10 MB, per sempre, per tutti.
In pratica, rispetto a cvs/svn/Perforce, con git/hg ognuno ha tutti i dati che sono nel server.. ed infatti ognuno potrebbe essere un server a se stante.
Idea potente.. ma in pratica dolorosa con i files binari 8)
Perforce invece ha di bello che si comporta bene con i binari (tiene la storia solo sul server, come cvs/svn) e funziona bene con branches & merges. Ultimamente la
licenza free e' migliorata di molto, ma comunque richiede sempre un server fai-da-te.. mentre per il resto dei version control ci sono soluzioni online piu' o meno free ..vedere
github (io uso
Assembla).
Un altro problema di Perforce e' che e' molto server-centrico.. e' pensato per essere sempre online. La versione recente migliora un po' le cose, aggiungendo una modalita' off-line ..ma e' comunque una cosa aggiunta dopo..
Quindi in pratica.. ti consiglio il buon vecchio svn (magari con un bel client visuale tipo
TortoiseSVN o
SourceTree) se hai abbastanza dati di grafica (come immagino avrai), altrimenti git e' interessante.. ma richiede il suo tempo ed e' forse piu' troppo una moda/religione.
Altrimenti hg, se vuoi la struttura tipo git, ma hai bisogno di estensioni tipo la gestione di subrepositories come facciamo noi (e se ti piace bestemmiare 8).