Estoy buscando integrar un sistema de compilación multiplataforma no trivial para un proyecto escrito predominantemente en C++. He evaluado Cmake y Scons, hasta el momento, y aunque ambos representan una mejora sobre la marca (GNU), ninguno de los dos enfoques parecía elegante o transparente en el contexto que estaba tratando de utilizar. Esto me llevó a Boost Build (Bjam) y me alienta que, dado que mi proyecto depende de Boost, bjam ya debería estar disponible para cualquier plataforma de destino viable .Bjam para el análisis de cobertura de gcov?
He tenido dificultades para tratar de integrar prolijamente la cobertura de código para las pruebas unitarias de una biblioteca ... con vistas a una eventual integración en un servidor de compilación como Jenkins. Mientras estoy dispuesto a ser guiado por bjam mejores prácticas/estándar, creo que necesito tres "variantes" distintas:
- liberación - para construir la biblioteca estática optimizada única
- de depuración - para construir no optimizado estática pruebas de biblioteca y unidad
- cobertura - para compilar biblioteca habilitada para cobertura y vincular con pruebas de unidades no habilitadas para cobertura.
Esencialmente, además de las versiones estándar de depuración y liberación, me gustaría una compilación de depuración especial que también recopile datos de cobertura.
Necesito construir con (al menos) g ++ y msvc ... y usar los conmutadores gcov solo con g ++. Esto significa que mi biblioteca objetivo necesita diferentes "compilerflags" para el objetivo ejecutable de prueba de unidad ... y solo para uno de mis compiladores ... y para una sola variante.
No tengo claro cuál es la mejor manera de lograrlo con Bjam, aunque sospecho que debería ser un caso de uso bastante común. ¿Bjam tiene soporte explícito para el análisis de cobertura de gcov (posiblemente presentando los resultados usando lcov)? De lo contrario, ¿alguien puede recomendar una estrategia que respalde el escenario anterior (simplificado)?
Gracias por esos consejos ...Prefiero tener la esperanza de encontrar una muestra que, al menos, funcione correctamente con gcc/gcov ... – aSteve