Какая часть неясна?

а цель использования заявления:

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 Сообщения:

Включить каталоги для импортированных библиотек

CMake импортирует поведение библиотеки

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

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