Sto cercando di integrare un sistema di compilazione multipiattaforma non banale per un progetto scritto prevalentemente in C++. Ho valutato Cmake e Scons, finora, e mentre entrambi rappresentano un miglioramento rispetto a (GNU), nessun approccio sembrava elegante o trasparente nel contesto che stavo cercando di utilizzare questi strumenti. Questo mi ha portato a Boost Build (Bjam) e sono incoraggiato che, dato che il mio progetto dipende da Boost, bjam dovrebbe essere già disponibile per qualsiasi piattaforma target valida .Bjam per analisi della copertura gcov?
ho incontrato difficoltà cercando di integrare perfettamente il codice-copertura per i test di unità di una libreria ... in vista di eventuale integrazione in un build server, come Jenkins. Mentre io sono disposto a essere guidata da bjam migliori pratiche/normale, penso che ho bisogno di tre "varianti" distinti:
- rilascio - per costruire libreria statica ottimizzata solo
- di debug - per costruire non ottimizzati statica library e unit test
- coverage - per creare librerie e collegamenti abilitati alla copertura con test unitari non coperti da copertura.
In sostanza, oltre al debug e build di rilascio di serie, Vorrei una speciale costruzione scopo di debug che raccoglie anche i dati di copertura.
Ho bisogno di compilare con (almeno) g ++ e msvc ... e utilizzare gli switch gcov solo con g ++. Questo significa che il mio target di libreria ha bisogno di diversi "compilatori" per il target eseguibile del test unitario ... e solo per una delle mie suite di compilatori ... e per una sola variante.
Non sono chiaro come ottenere questo risultato con Bjam, anche se, sospetto, dovrebbe essere un caso d'uso abbastanza comune. Bjam ha il supporto esplicito per l'analisi della copertura gcov (possibilmente presentando i risultati usando lcov)? In caso negativo, qualcuno può raccomandare una strategia che supporti lo scenario (semplificato) sopra riportato?
Grazie per quei puntatori ...Preferirei piuttosto che trovassi un campione che, almeno, funzionasse correttamente con gcc/gcov ... – aSteve