Связывание 2 статических библиотек с target_link_libraries

Я пытаюсь связать две статические библиотеки с помощью cmake, но не получаю ожидаемого результата, когда просматриваю библиотеки с помощью ar -t,

Небольшой пример, где библиотека A связана с B:

файл a.c:

void a(){}

файл b.c:

void b(){}

файл CMakeLists.txt:

project(test C)

add_library(a STATIC "a.c")
add_library(b STATIC "b.c")
target_link_libraries(a b)

Я ожидал увидеть оба объектных файла в выводе ar -t liba.a но вместо этого я вижу только a.c.o на выходе.

1 ответ

Вы всегда можете отладить свой CMakeLists.txt, используя аргумент VERBOSE=ON, чтобы (в Linux) таким образом вы могли проверить, соответствуют ли команды ожидаемым.

$> make VERBOSE=ON

В вашем случае CMake сканирует зависимости ac и отбрасывает bc как реальную зависимость для ac, поэтому он не связан.

Другие вопросы по тегам