207 похожих чатов

Здравствуйте. Вопрос по сборке CMake. Компилирую статическую свою библиотеку, а также

создаю CMake-Config, однако она зависима от двух других сторонних. Вместе с этим в папке проекта создаю некоторые примеры работы с библиотекой. Примеры также построены на CMake, через CMake нахожу свою библиотеку с помощью find_package и только эту библиотеку!

При компиляции примеров мне вылетают ошибки линковщика, который не может найти объекты сторонних библиотек. У меня вопрос, нужно ли мне отдельно в CMake файлах примеров прописывать подключение сторонних библиотек, или эти библиотеки должны самостоятельно подключиться посредству использования ранее созданного CMake-Config?

7 ответов

20 просмотров

Чем вариант с add_subdirectory (как example) не устраивает? В кликхаусе также сделано и все ок, тем более, что зависимостей всего пару

Надо cmake config делать через configure_package_config_file(), и в передаваемом шаблоне искать транзитивные зачисимости через find_dependency()

Примерно как-то так, как я чуваку сделал в его либке: https://github.com/Eixini/QNixieNumber/blob/main/QNixieNumberConfig.cmake.in

Кирилл 🤤- Автор вопроса

Сделал по аналогии, по итогу выдает ошибку: [cmake] Target "VKAPI" INTERFACE_LINK_DIRECTORIES property contains path: [cmake] [cmake] "/Users/totalboy/Desktop/Projects/C++/VK-API/include" [cmake] [cmake] which is prefixed in the source directory. Запушил в гит, можешь посмотреть CMake https://github.com/qucals/VK-API/tree/develop

Надо использовать GNUInstallDirs

https://github.com/qucals/VK-API/blob/fd53b16803d39f90538893157e2e2b09f52b384a/CMakeLists.txt#L56 - вот это надо заинклудить до первого использования CMAKE_INSTALL_INCLUDEDIR

Кирилл 🤤- Автор вопроса

Объявил раньше, но не помогло. Та же ошибка https://github.com/qucals/VK-API/blob/develop/CMakeLists.txt

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
6
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Карта сайта