виде g++ -Wall -o blink blink.cpp -lwiringPi
Как мне указать cmake, что мне нужна библиотека wiringPi?
Эмм, если в общем случае - то что-то вроде find_package (%название_библиотеки% REQUIRED), потом - target_link_libraries(%название проекта% PUBLIC %название_библиотеки_или_что-то_в_этом_роде%) Но первая загвоздка в том, что сама либа должна быть в известном для CMake месте, или подтянута через какой-нибудь пакетный менеджер, или ещё что-то. Вторая загвоздка - у разных либ по-разному называется цель линковки, которая в target_link_libraries. Иногда имя совпадает с именем библиотеки в find_package, иногда совпадает, но пишется с префиксом, иногда хранится в переменных ${%название_библиотеки%_LIBRARY}, иногда - ${%название_библиотеки%_LIBRARIES}... Уфф. Правильно ли я понимаю вопрос? И так же присоединяюсь: не знает ли кто-нибудь более универсальный рецепт решения таких проблем? Потому что с вокруг каждой либы лично мне постоянно с бубном плясать приходится...
Для моего случая я нашел такое решение find_library(WIRINGPI_LIBRARIES NAMES wiringPi) target_link_libraries(<executable_name> ${WIRINGPI_LIBRARIES}) То есть, я ищу по имени, потому что его знаю и либа точно установлена на машине
Обсуждают сегодня