Non hai specificato un ambiente di sviluppo (IDE) e menzionato nei commenti vuoi che questo sia un problema più concettuale, quindi ecco un modo per organizzare ciò che non è specifico per alcun IDE. Ho già fatto questo prima di sviluppare librerie statiche.
In primo luogo, crei il tuo progetto di libreria con il proprio makefile e assicurati che venga compilato correttamente. Avrai bisogno di un file .a
come output.
Successivamente, i test delle unità e il programma dimostrativo sono tutti progetti secondari nella libreria statica. La struttura ha questo aspetto:
root
|
+-- library
| |
| +-- include
| |
| +-- bin
|
+-- demo program
|
+-- unit tests
Gli altri tuoi progetti aggiungono "../library/include" al percorso di inclusione. Tutti i compilatori moderni ti permettono di farlo sulla riga di comando. In modo simile, aggiungi "../library/bin" al percorso del linker. In questo modo il linker può trovare il file .a
.
Ogni progetto ha il proprio makefile e i propri file di progetto IDE. Sono separati, ma usati insieme. In un IDE si impostano le dipendenze del progetto in modo che la libreria sia costruita per prima.
Successivamente, puoi aggiungere un makefile "master" al livello root che va semplicemente in ogni sottodirectory e crea ogni progetto usando il makefile trovato in esso. Se si imposta correttamente il makefile, sarà anche sicuro di creare l'ordine corretto, tutto in un passaggio (utente). Poiché questo è Internet, qualcun altro ha già detto come farlo meglio di quanto posso:
Nota: questo stesso progetto funziona quando si usano altri ambienti di costruzione come Ant e Maven e altri linguaggi compilati. Ho usato questa struttura per una varietà di combinazioni di linguaggi e strumenti di costruzione.