Domanda

E 'possibile produrre file di dati (file gcov .gcda) eseguendo un eseguibile collegato ad una libreria condivisa costruita con l'opzione --coverage?

In sostanza, ho la biblioteca principale composto da più file di c ++ compilati in una libreria condivisa e quindi una sottodirectory denominata "test" che contiene un programma di test che collegamenti da e mette alla prova la biblioteca principale. Tutto compila bene ei file .gcno sono prodotti sia per i file di origine di libreria ei file di origine di prova. I file .gcda sono prodotti solo per i file di origine di prova, però, ma ho davvero bisogno di loro per i file di origine effettivi che vengono compilati nella libreria condivisa.

Tutte le idee?

Ulteriori informazioni:

  • E 'di codice C ++ tutto
  • Il tutto viene costruire con gli script make generati da automake
  • L'opzione --coverage è specificata per lib_la_CPPFLAGS e lib_la_LDFLAGS nella libreria condivisa Makefile.am
  • L'opzione --coverage è specificata per AM_CPPFLAGS e AM_LDFLAGS in eseguibile di prova Makefile.am
  • I file di origine di prova fanno uso di Google prova (un Unit Testing Framework C ++)
È stato utile?

Soluzione

Alla fine ho risolto questo problema ottenere qualche aiuto dai ragazzi gcc. Vedere la discussione qui: http://gcc.gnu.org/ ml / gcc-help / 2010-09 / msg00130.html .

Si scopre che i file .gcda venivano messi nella directory .libs in quanto è lì che i file della libreria condivisa (.so) erano. Al fine di ottenere gcov per produrre l'output, ho dovuto spostare i file .gcda di un livello al punto in cui i file di origine erano.

Inoltre, ecco un filo simile in cui qualcun altro era in esecuzione in alcuni degli stessi problemi: può gcov accordo con oggetto condiviso? .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top