Chciałbym zintegrować niebanalny międzyplatformowy system kompilacji dla projektu napisanego głównie w języku C++. Do tej pory oceniłem Cmake i Scons, i chociaż oba stanowią ulepszenie w stosunku do (GNU) make, żadne podejście nie wydawało się ani eleganckie ani przezroczyste w kontekście, w którym próbowałem użyć tych narzędzi. To doprowadziło mnie do Boost Build (Bjam) i jestem przekonany, że biorąc pod uwagę, że mój projekt zależy od Boost, bjam powinien już być dostępny dla każdej realnej platformy docelowej .Bjam dla analizy zasięgu gcov?
Wpadłem w trudność, starając się starannie zintegrować zasięg kodu dla testów jednostkowych biblioteki ... z myślą o ewentualnej integracji z serwerem kompilacji, takim jak Jenkins. Chociaż jestem skłonny kierować Bjam najlepszy/standardowej praktyki, myślę, że potrzebne są trzy różne „warianty”:
- Release - budowy zoptymalizowaną bibliotekę statyczną tylko
- debug - do budowy nieoptymalizowanym statyczne testowanie biblioteki i jednostki testowej
- pokrycia - aby zbudować bibliotekę z włączonym zabezpieczeniem i link z włączonymi testami jednostkowymi bez zasięgu.
Zasadniczo, oprócz standardowych wersji debugowania i wydań, chciałbym utworzyć kompilację specjalnego przeznaczenia, która również zbiera dane dotyczące zasięgu.
Potrzebuję zbudować z (co najmniej) g ++ i msvc ... i używać przełączników gcov tylko z g ++. Oznacza to, że mój cel biblioteki potrzebuje różnych "flag kompilacji" do wykonywanego obiektu testowego jednostki ... i tylko dla jednego z moich zestawów kompilatorów ... i tylko dla jednego wariantu.
Jestem niejasny, jak najlepiej to osiągnąć z Bjam - choć podejrzewam, że powinien to być dość powszechny przypadek użycia. Czy Bjam ma jawne wsparcie dla analizy zasięgu gcov (ewentualnie prezentując wyniki używając lcov)? Jeśli nie, czy ktoś może zalecić strategię, która wspierałaby powyższy (uproszczony) scenariusz?
Dzięki za te wskazówki ...Wolałbym mieć nadzieję, że znajdę próbkę, która przynajmniej działa poprawnie z gcc/gcov ... – aSteve