PDA

View Full Version : [Visual Studio 2005] Dipendenze


sottovento
31-08-2008, 11:06
Colleghi,
ho un problema vecchio come il C: le dipendenze.
Ho una solution contenente un centinaio di progetti, i quali ovviamente condividono molti header file.
In caso di modifica di un file di inclusione, NON SEMPRE vengono ricompilati i progetti interessati, o quanto meno non tutti!
Siccome questo puo' dare un sacco di problemi (di quelli inspiegabili), ogni volta ci si riduce a ricompilare tutto, perdendo parecchie ore.
Come risolvere il problema?

Ho gia' guardato su Internet/MSDN ed il suggerimento e' quello di usare MSBuild invece di creare i "soliti" progetti. Pero' non ho trovato nulla sul motivo: come fa MSBuild a risolvere questi problemi? E non ho trovato nulla nemmeno su COME dire a MSBuild di risolvere questo problema. Tant'e' vero che, con una semplice prova, non lo risolve...


Qualcuno ha qualche esperienza? Ammetto di rimpiangere i makefile del System V...

71104
31-08-2008, 11:21
una cosa che potresti provare è isolare tutti gli headers in un progetto a parte da cui dipendono tutti gli altri. il progetto chiaramente non deve produrre alcuna immagine eseguibile, deve essere il cosiddetto "Utility project".

sottovento
31-08-2008, 20:46
una cosa che potresti provare è isolare tutti gli headers in un progetto a parte da cui dipendono tutti gli altri. il progetto chiaramente non deve produrre alcuna immagine eseguibile, deve essere il cosiddetto "Utility project".

E' una soluzione che posso provare. Purtroppo sul progetto in questione sara' difficile da applicare, poiche' gli include sono "spalmati" in parecchi sottoprogetti, alcuni realizzati anche da aziende esterne.

Tuttavia, mi sembra manchi ancora qualcosa: come tutti i sistemi per il build incrementale, Visual fa un confronto con le date fra sorgente/oggetto.
La modifica di un include non cambierebbe la data del sorgente .cpp (rendendo obsoleto il suo .obj), quindi non lo si ricompilerebbe.

Potrebbe funzionare se facessi un makefile, e definissi un nuovo tipo di file, magari chiamato .copia (o quant'altro). Questo nuovo tipo di file lo potrei far dipendere dall'include e, una volta stabilito che occorre fare il build del file, copierei l'header stesso.

Insomma, qualcosa del tipo:


myfile.copia: myfile.h
copy myfile.h myfile.copia

e poi, utilizzando il tuo suggerimento, far dipendere tutti i progetti da questo.

Pensi che si possa fare utilizzando i progetti di Visual? Vedi altre soluzioni?