2012-02-01 10 views
5

Esistono diversi modi per gestire una build di un progetto. So di queste possibilità:Qual è il modo giusto per creare un progetto C++? Marca/IDE/Ant ...?

  • Fai
  • IDE
  • Ant
  • Maven

Possiamo dire che alcuni di loro (o anche qualche altro che non so?) è in generale superiore agli altri e dovrebbe essere decisamente preferito in un nuovo progetto?

In questo momento, utilizzo sul mio progetto una build gestita da Eclipse IDE e considero la migrazione ai makefile. In qualche modo penso che sarà più gestibile, ma d'altra parte, in realtà è l'obiettivo degli IDE di rendere le cose più gestibili. Quindi sto solo facendo del lavoro dannoso cercando di tornare a qualcosa di vecchio stile? Ho una grande esperienza con Maven da un progetto Java, ma è una buona idea forzarlo con C++ (anche se so che è possibile ...)?

+0

La cross platform è una priorità o stiamo parlando di una piattaforma specifica? –

risposta

10

maggior C++ costruire sistemi che ancora esistono, fare tali per una ragione. Vale a dire, sono migliori delle alternative in qualche modo. (Tranne i sistemi di compilazione che hai scritto XML, scusa ANT)

Ma in generale, vediamo emergere alcuni modelli di utilizzo.

In generale, vengono visualizzati solo i progetti IDE utilizzati per MSVC e XCode. Ciò è dovuto alla migliore integrazione, con l'IDE, sì. Ma più importante, la piattaforma. VC++ è particolarmente ben supportato dai progetti IDE e in genere ha un supporto molto scarso, ad eccezione di cose che finiscono per generare i progetti. Non ho mai visto un progetto C++ che costruisca con eclipse, ma potrebbe non essere collegato a programmatori C++ che codificano in Eclipse.

Su piattaforme unix, si vedono generalmente alcune varianti di Makefile in uso. Sembra che questo sia legato al fatto di volere un buon demonitor per costruire progetti, dal momento che la maggior parte del codice è distribuito in forma sorgente.

Progetti come CMake (generatori di progetto) sono spesso utilizzati quando la piattaforma independience è una priorità assoluta, si guadagna un certo overhead dovuto alla generare-> costruire gradini in corso, ma guadagna la possibilità di costruire il progetto su piattaforme multiple da una singola Buildbase.

Ho visto solo ANT usato per eseguire build continious, e anche in questo caso, in genere si chiama un passo di costruzione separato, non sono sicuro del perché questo sia.

Poi ho anche visto un sacco di utilizzo per cose come Jam (fare sostituzioni) in progetti proprietari che hanno come target * nix/Mac o altre piattaforme meno comuni. Soprattutto nello sviluppo del gioco, penso che questo sia in genere composto da team che amano Creare in teoria (Il concetto di trattare il tuo buildsource come se tratti il ​​tuo codice, non WYSIWYG e simili) ma capisci che Make è rotto. Tuttavia, avere il lusso di non dover fare distribuzioni di origine.

Questo è solo un mucchio di schemi che ho osservato, e cercando di razionalizzarlo, molto poco di questo si basa su verità oggettive.

+0

build C++ con Eclipse non è così difficile da configurare – user1387622

+0

Sembra probabile. Non volevo insinuare che Eclipse fosse difficile da usare a tale riguardo. Solo che non vediamo molti progetti C++ distribuiti con i progetti di build di Eclipse nello stesso modo in cui lo facciamo per Visual Studio e XCode. – Arelius

6

Per l'indipendenza dalla piattaforma, ho ottenuto buoni risultati utilizzando Cmake. La sua configurazione è basata su file di testo e produce script di compilazione "reali" come Makefile o progetti appropriati per IDE. Se non hai problemi con l'introduzione di una sorta di passo pre-compilazione, ci proverei.

Nei casi in cui posso mantenere la piattaforma dipendente, vado semplicemente con quello che preferisco. Tipicamente progetti/soluzioni di Visual Studio su Windows e Makefile su Linux.

1

Suppongo che tu stia utilizzando Eclipse CDT. Il processo di compilazione è in realtà già basato su Makefile. Tuttavia, penso che il CDT generi il Makefile al momento della compilazione. Forse qualcun altro potrebbe verificarlo per me. Indipendentemente da ciò, nel CDT è possibile creare un progetto "Makefile". Questo tipo di progetto ti consente di utilizzare la fonte preesistente e il suo Makefile invece di partire da zero.

Un'altra cosa da considerare è che è necessario supportare i build senza headless (ad esempio come parte di un CI o di un altro processo di compilazione automatizzato)? Se è così, allora vorrete sicuramente scegliere una tecnologia di costruzione che supporti tale (come Make).

Per info su come CDT utilizza Makefiles: Eclipse documentation

Problemi correlati