Jak określić zależność biblioteki wprowadzoną przez plik nagłówkowy

Załóżmy, że w projekcie CMake mam źródło wbudowane w bibliotekę

// a.cpp
void f() { /* some code*/ }

I mam nagłówek

// b.h
void f();
struct X { void g() { f(); } };

Mam inny plik:

// main.cpp
#include "b.h"
int main() { X x; x.g(); }

CMakeLists.txt zawiera:

add_library(A a.cpp)
add_executable(main main.cpp)
target_link_libraries(main A)

Teraz spójrz na ostatnią linię CMakeLists.txt: Muszę określić A jako zależności bezpośrednio od głównego. Zasadniczo muszę określić takie zależności dla każdego źródła, które zawiera b.h. Ponieważ dołączenia mogą być pośrednie i przejść przez cały łańcuch włączeń. Na przykład a.cpp wywołuje funkcję inline klasy ch, która w wywołaniach wywołuje funkcję w dh, itd., A na końcu wywołuje funkcję z biblioteki A. Jeśli bh jest dołączone przez pliki partii, ręczne wykrycie wszystkich takich zależności nie jest możliwe dla duże projekty.

Więc moje pytanie brzmi: czy i tak należy określić, że dla każdego pliku źródłowego, który bezpośrednio lub pośrednio zawiera nagłówek, musi się on łączyć z pewną biblioteką?

Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion