Jak dodać do binarki libkę statyczną w cmake'u?

0

Witam
gcov jest to narzedzie do sprawdzania pokrycia kodu. Więc jeżeli tworzymy plik binarny ze źródeł to potem możemy mieć statystykę pokrycia z tych źródeł. Problem zaczyna się jak linkujemy statyczną bądź dynamiczną libkę do naszego bina. Wtedy pokrycia kodu z tej libki nie będzie. Przeczytałem że trzeba cos zrobić w stylu:

target_link_libraries(moj_ut -Wl,--whole-archive -lmojaLibka -Wl,--no-whole-archive)

Niestety linker nie potrafi mi odnaleźć mojej libki.
Jeżeli powyższa linijkę kodu zastąpię tym:

target_link_libraries(moj_ut  mojaLibka)

to nie ma problemu. Binarka moj_ut się buduje no ale wtedy nie ma pokrycia kodu gcovem źródeł z których tworzona była mojaLibka.
Co do mojaLibka to jest ona tworzona cmakem:

add_library(mojaLibka STATIC ${zrodla})

więc jest to statyczna linka. No i teraz jak to zrobić by przy analizie gcovem binarki moj_ut była statystyka pokrycia ze źródeł również i mojej libki?

0

Wydaje mi się, że coś pomieszałeś.

target_link_libraries(moj_ut -Wl,--whole-archive -lmojaLibka -Wl,--no-whole-archive)

nie ma takiej składni w Cmake'u. Podane opcje są opcjami linkera czyli wydaje mi się, że powinny być przesyłane przy kompilacji zródeł. Dodanie biblioteki do binarki tak jak opisałeś, czyli:

target_link_libraries(moj_ut  mojaLibka)
0

Spróbuj tak:

SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} --whole-archive -lmojaLibka --no-whole-archive")

1 użytkowników online, w tym zalogowanych: 0, gości: 1