Makefile per il progetto di libreria per essere in grado di compilare i test unitari e il programma dimostrativo usando make

4

Sono nuovo per makefile e sto sviluppando una libreria (non eseguibile) in C ++.

Oltre alla libreria ho dei test unitari (eseguibili) e un programma dimostrativo (eseguibile). Vorrei ora poter compilare i test unitari e il programma dimostrativo usando make.

Qual è concettualmente il modo corretto di farlo?

  1. La libreria ha un makefile che genera solo un file di libreria (.a) che viene poi collegato al programma dimostrativo e ai test di unità nei relativi makefile, cioè ho 3 makefile? Sarebbe ancora possibile creare l'eseguibile in un solo passaggio?

  2. Solo il programma dimostrativo e i test unitari hanno un makefile ciascuno?

posta user695652 13.08.2015 - 19:58
fonte

1 risposta

3

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.

    
risposta data 13.08.2015 - 21:33
fonte

Leggi altre domande sui tag