2014-09-22 42 views
7

Sto scrivendo un'applicazione multipiattaforma. Una versione funzionerà sotto Win32, seconda - su Windows Phone.Come condividere file di codice sorgente C++ tra progetti in Visual Studio?

Mi piacerebbe riutilizzare il mio core C++ - specialmente che non ci sono dipendenze di piattaforma all'interno, solo STL. Ordino di farlo, voglio usare gli stessi file sorgenti in due progetti: libreria Win32 statica (.lib) e componente Windows Phone (C++/CLI).

Come posso configurare questi due progetti per utilizzare esattamente gli stessi file di origine e di intestazione?


Ok, facciamo un esempio. Diciamo, che ho progetto:

MyApp.Library [win32 lib] 
    myClass.cpp 
    myClass.h 

Questa libreria viene compilata per dll file e poi importato in un'applicazione di Win32:

MyApp.Win32App [win32 C#] 

Dal win32 non è compatibile con Windows Phone a livello binario , Non posso usare direttamente quella lib. Ma poiché Library utilizza solo STL, posso creare Windows Phone Component, inserire tutte le sue risorse lì e creare.

MyApp.Component [WinPhone component] 
    myClass.cpp 
    myClass.h 

Desidero che questi due file siano esattamente gli stessi utilizzati nella libreria. Come dovrei organizzare il progetto per ottenere questo effetto?

+0

Si prega di commentare su downvote? – Spook

+0

Che dire di avere le applicazioni principali e la libreria all'interno di una soluzione e avere configurazioni di compilazione corrispondenti per tutte loro? –

+1

Non sono il downvoter, ma è davvero difficile vedere il problema qui. –

risposta

4

È possibile aggiungere codice sorgente da una posizione comune a più progetti. Io lo faccio spesso; Ho il codice in una directory comune che è allo stesso livello nella gerarchia della directory come la maggior parte dei miei file di progetto. Si tratta semplicemente di aggiungere file .h e .cpp dalla directory comune ai vari progetti.

Ho notato che VisualStudio diventa un po 'nervoso e difficile se si utilizza un'unità di rete per la sorgente comune, quindi non lo faccio. Ma fintanto che tutto il codice sorgente è su dischi locali e l'IDE sa dove trovarli, non ci sono problemi ad avere lo stesso file sorgente in moltissimi progetti.

+0

quindi in un certo senso non hai veramente risolto il problema - a meno che non ci siano le istanze di mutiple dello stesso file - a meno di mettere condivisi in una propria lib, non c'è davvero alcun modo di aggiungerli relativamente ??? – serup

+1

@serup Non occorrono più istanze di un file sorgente per avere progetti diversi in cartelle diverse che si riferiscono allo stesso file sorgente. Ho un emendamento alla mia risposta precedente: VisualStudio è OK con un progetto che fa riferimento a sorgenti su unità di rete. Diventa insoddisfatto dei file di progetto che si trovano su unità di rete. Sviluppo su diversi computer sulla stessa rete locale, e molti dei miei progetti includono classi dalla mia libreria di classi homespun su un disco di rete. – Logicrat

+0

sì, ho trovato una soluzione semplice che funziona per me - puoi vedere la mia risposta – serup

0

un modo è di mettere tutti i file .hpp e .cpp in una cartella separata - chiamarlo "Condivisa".

Quindi aggiungere una directory di inclusione aggiuntiva all'interno della proprietà di configurazione della soluzione: questa directory deve essere un percorso relativo.

Quindi aggiungere SOLO i file cpp relativo dalla cartella condivisa nel progetto

NB! Se hai incluso "stdafx.h" nei tuoi file .cpp nella cartella condivisa, commentali.

+1

Molti dei miei file '.cpp' condivisi includono' "stdafx.h" '. Ogni file di progetto ha la sua copia locale di stdafx. In alcuni casi, devo aggiungere la directory del progetto in fondo all'elenco di directory da includere, ma ciò mi consente di mantenere la funzionalità delle intestazioni precompilate. – Logicrat

+0

@Logicrat ha riscontrato solo problemi con le unittests: è stato necessario impostare un progetto di unittest per NON utilizzare intestazioni precompilate – serup

Problemi correlati