#cmake #cmake-modules
#cmake #cmake-модули
Вопрос:
Я хочу создать модуль, который позволяет цели включать несколько статических библиотек, хранящихся в одном каталоге.
Конечная цель — разрешить включение цели -L<library dir> -l<staticlib-1> -l<staticlib-2> ... -l<staticlib-n>
при связывании.
Я попытался использовать target_link_libraries
следующее, что не сработало:
add_library(SomeTargetName INTERFACE)
target_link_libraries(SomeTargetName INTERFACE "-L${SOME_TARGET_LIBRARY_DIR}" )
Приведенный выше фрагмент вызывает следующее сообщение об ошибке:
Цели INTERFACE_LIBRARY могут иметь только свойства, внесенные в белый список. Свойство «LINK_DIRECTORIES» не разрешено.
Поддерживает ли cmake такой тип использования? Если да, то как это делается?
Комментарии:
1.
-L${SOME_TARGET_LIBRARY_DIR}
нет библиотеки. Это вариант.target_link_options
. И нет, создайте обычную библиотеку.2.
target_link_options
был доступен только с версии cmake v3.13, поэтому должен быть способ сделать это без его использования. И, очевидно, да,-L<XXX>
это не библиотека, а возможность добавить каталог в путь поиска , который был причиной, по которой он был там с самого начала и использовался в качестве примера.