Как указать библиотечную зависимость, представленную заголовочным файлом

Предположим, в проекте CMake у меня есть источник, который встроен в библиотеку

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

И у меня есть заголовок

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

У меня есть другой файл:

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

CMakeLists.txt содержит:

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

Теперь посмотрим на последнюю строку CMakeLists.txt: мне нужно явно указать A как зависимости main. По сути, мне нужно указать такие зависимости для каждого источника, который включает в себя b.h. Поскольку включения могут быть косвенными и проходить через цепочку включений. Например, a.cpp вызывает встроенную функцию класса из ch, которая, в свою очередь, вызывает функцию из dh и т. Д., И, наконец, вызывает функцию из библиотеки A. Если bh включен в файлы lot, ручной поиск всех таких зависимостей невозможен для крупные проекты.

Поэтому мой вопрос заключается в том, можно ли в любом случае указать, что для каждого исходного файла, который прямо или косвенно включает заголовок, необходимо связать его с определенной библиотекой?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос