Как смоделировать транзитивные зависимости между статическими библиотеками в CMake? - PullRequest
0 голосов
/ 07 декабря 2018

С учетом исполняемого файла myExe и 2 статических библиотек myLib1 и myLib2.Учитывая следующие зависимости myExe -> myLib1 -> myLib2, как следует моделировать транзитивную зависимость между myLib2 и myLib1?

Кажется, что правильный способ сделать это может быть:

target_link_libraries(myLib2 myLib1)

Но, согласно документации:

Укажите библиотеки или флаги, которые будут использоваться при связывании данной цели и / или ее зависимых элементов

Также, add_dependencies не кажется транзитивным.

Поэтому я нахожу это странным для использования target_link_libraries, и мне интересно, есть ли другой "более чистый" способ.

1 Ответ

0 голосов
/ 07 декабря 2018

Для экспресса использование зависимость myLib1 -> myLib2 (то есть библиотека myLib1 использует функции, определенные в myLib2), используйте

target_link_libraries(myLib2 myLib1)

Покаtarget_link_libraries не влияет на файл myLib2.a (поскольку статические библиотеки никогда не связаны), эффект будет виден, когда myLib2 будет связан с общей библиотекой или исполняемым файлом:

target_link_libraries(myExe myLib2)

автоматически свяжет myExe с myLib1.


Еще раз отметим, что такое распространение связей для статических библиотек работает, только когда myLib2 используется в том же проекте , который вызывает target_link_libraries(myLib2 myLib1).

Попытка target_link_libraries(myExe myLib2) из , другой проект будет связан только с файлом myLib2.a, который не содержит информацию о myLib2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...