Какая часть неясна?
а цель использования заявления:
add_library(<tgt> [SHARED|STATIC] IMPORTED)
Из того, что я обнаружил, даже если вы создадите импортированную библиотечную цель выше, вам все равно нужно будет указать конкретное местоположение фактических .so или .a. Для ссылки на исполняемый файл потребуется по крайней мере 3 команды cmake, и компилятор все равно не будет автоматически выполнять поиск по общим каталогам включения в вашей ОС.
Пример:код cmake для ссылки на IMPORTED lib
Из документации CMake я понимаю, что на самом деле есть 3 способа связать библиотеку, которая не является целевой в подпроекте вашего общего приложения / библиотеки.
CMake документация target_link_libraries ()
Использование пакета CMake для одного из поставляемых сценариев пакета.Используя флаг компоновщика:
target_link_libraries(<tgt> [SHARED|STATIC|...] -lncursesw)
Или используя библиотечный метод IMPORTED (показан в коде сверху).Основное отличие при использовании второго метода заключается в том, что он занимает всего одну строку кода и будет выполнять поиск по всем предопределенным каталогам включения вашего компилятора в вашей ОС. Может ли кто-нибудь помочь мне понять, почему используется метод add_library ()?
Дополнительные Реализованные SO Сообщения: