Al mio posto abbiamo una grande base di codice C++ e penso che ci sia un problema con i file di intestazione.Dipendenze dei file di intestazione tra i moduli C++
Ci sono molti progetti di Visual Studio, ma il problema è nel concetto e non è correlato a VS. Ogni progetto è un modulo, che esegue funzionalità particolari. Ogni progetto/modulo è compilato in libreria o binario. Ogni progetto ha una directory contenente tutti i file sorgente - * .cpp e * .h. Alcuni file header sono API del modulo (intendo il sottoinsieme di file header che dichiarano API della libreria creata), alcuni sono interni ad esso.
Ora al problema: quando il modulo A deve lavorare con il modulo B, allora A aggiunge la directory sorgente di B per includere il percorso di ricerca. Pertanto tutte le intestazioni interne del modulo B vengono visualizzate da A al momento della compilazione.
Come effetto collaterale, lo sviluppatore non è costretto a concentrarsi su quale sia l'esatta API di ciascun modulo, che comunque considero una cattiva abitudine.
Considero un'opzione come dovrebbe essere al primo posto. Ho pensato di creare in ogni progetto una directory dedicata contenente solo i file di intestazione dell'interfaccia. Un modulo client che desidera utilizzare il modulo può includere solo la directory dell'interfaccia.
Questo approccio è corretto? Come si risolve il problema al posto tuo?
UPD Sul mio posto precedente, lo sviluppo è stato fatto su Linux con g ++/gmake e abbiamo davvero usato per installare i file di intestazione API in una directory comune è alcune risposte propongono. Ora abbiamo il progetto Windows (Visual Studio)/Linux (g ++) che usa cmake per generare file di progetto. Come impongo l'installazione di pre-installazione dei file di intestazione API in Visual Studio?
Grazie Dmitry
Credo che Google inserisce tutte le intestazioni interne in una cartella denominata interna. – xian