2009-06-18 11 views
8

Abbiamo un programma che viene eseguito separatamente, eseguito con un comando execvp. Quindi ha bisogno di un metodo principale, ma credo che ponga un problema a eclissi con una marca gestita. Dobbiamo mantenere questo codice segregato in un progetto separato o esiste un modo per incorporarlo nello stesso progetto di eclissi?Come creare due reti in un progetto C++ eclisse

risposta

1

Se il makefile invocato non compila i 2 metodi main() nello stesso eseguibile, non causerà alcun problema. Non so come vengono gestiti i progetti Eclipse, se è come VS, dove "progetto" significa un singolo eseguibile o libreria, e "soluzione" è un gruppo di "progetti", quindi sembrerebbe che avresti bisogno di più di un progetto. Se, OTOH, un "progetto" può contenere diversi "sottoprogetti" in cui un "sottoprogetto" è un eseguibile o una libreria, dovresti essere in grado di gestirlo facilmente.

3

Mantenerlo nello stesso progetto e utilizzare il preprocessore definisce quali si definiscono in modo diverso a seconda del tipo di main che si desidera includere nel progetto corrente. Qui le reti sono nello stesso file, ma possono ovviamente risiedere in file diversi.

#if defined(MAIN_ONE) 
int main() 
{ 
    // Do stuff 
} 
#elif defined(MAIN_TWO) 
int main() 
{ 
    // Do some other stuff 
} 
#endif 
1

Non sono a conoscenza di un modo semplice per creare due reti utilizzando il sistema di generazione Eclipse. Il più piccolo cambiamento che è necessario fare è spostare i makefile e usare i target makefile per costruire.

Invece, ti consiglio di passare a utilizzare CMake. CMake può essere utilizzato per generare makefile da utilizzare con eclissi. Il vantaggio derivante dall'utilizzo di CMake è che si può facilmente indicare come costruire le librerie e collegare le librerie per formare gli eseguibili. CMake può generare build per Eclipse, Visual Studio, Code Blocks o makefile (in questo modo è possibile utilizzare il prompt dei comandi).

7

Creare un progetto per ogni eseguibile che ha una funzione main() e creare un progetto aggiuntivo per rappresentare il software nel suo complesso (un progetto di tipo "contenitore"). Eclipse consente di specificare i progetti come dipendenze di altri progetti e in questo caso si desidera impostare il progetto contenitore per elencare gli altri progetti come "Progetti di riferimento".

Per fare ciò, creare il progetto contenitore, quindi fare clic con il pulsante destro del mouse sul progetto nella colonna di sinistra (Explorer progetto) e fare clic su "Proprietà". Apparirà una finestra di dialogo. Seleziona la voce "Referenze progetto" nella lista a sinistra e vedrai un elenco di tutti i progetti con cui Eclipse sta attualmente lavorando. Seleziona le caselle accanto ai progetti per i singoli eseguibili, quindi fai clic su OK. Ora, quando si esegue una build sul progetto container, Eclipse dovrebbe eseguire automaticamente una build anche su questi progetti dipendenti.

Quando si utilizzano i sottoprogetti in questo modo, ho trovato (personalmente) utile creare un set di lavoro che includa il progetto contenitore e tutti i sottoprogetti (ciò può facilitare la ricerca dell'intero progetto software).

+0

Come si interrompe il progetto contenitore dal lamentarsi di non avere obiettivi "all" o "puliti"? Secondariamente, come si specifica l'ordine in cui verranno costruiti i sottoprogetti? (In questo momento la mia serie di progetti include un progetto che costruisce una libreria su cui tutti gli altri progetti si affidano, ma la libreria non è costruita per prima (i capricci della denominazione), il che significa che ho bisogno di costruire il progetto container due volte) – Urhixidur

+0

@Urhixidur - Dovresti contrassegnare la libreria come una dipendenza dei programmi che la usano, ma non mi ricordo in modo esplicito come farlo nell'interfaccia utente di Eclipse. È piuttosto semplice se stai scrivendo i tuoi makefile, però. Per la prima domanda, è sufficiente definire gli obiettivi della marca (anche se in realtà non fanno nulla). – bta

0

Questo è costruito nel linguaggio C++. Dovresti modificarlo per ottenere il risultato. C'è qualcosa da fare 2 cose in una volta se questo è quello che vuoi.

Problemi correlati