Как использовать cmake, чтобы проверить, существуют ли какие-либо библиотеки перед сборкой наших исходников? - PullRequest
0 голосов
/ 06 февраля 2019

Обычно в пакетах с открытым исходным кодом cmake проверяет, существуют ли какие-либо заголовки или библиотеки, или я хочу, чтобы мой собственный проект имел такую ​​же функциональность.

Поэтому я хотел бы знать, предоставляет ли cmake некоторую команду для проверкиесли некоторые файлы ".so" / ". a" / ". h" существуют в текущей системе Linux или нет, если нет, cmake даст мне подсказку для их установки?

Как cmake поддерживает это?

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Для поиска произвольной библиотеки вы можете использовать команду find_library () .Та же задача для заголовков выполняется с помощью find_file () .Вы также можете искать исполняемые файлы с помощью find_program().

Как сказал @ Damian в своем naswer, многие библиотеки предоставляют файлы "config", такие как FindBoost.cmake.Такие библиотеки можно найти, вызвав команду find_package(Boost).Эта команда найдет и загрузит файл конфигурации и установит соответствующие переменные.

0 голосов
/ 06 февраля 2019

Вам необходимо предоставить файлы -config.cmake, чтобы сообщить другим проектам, где находятся ваши библиотеки и заголовки. Здесь , вы найдете то, что ищете.

0 голосов
/ 06 февраля 2019

Обычно можно использовать find_package(ABC REQUIRED) и затем обращаться к нему в вашем проекте.Это обеспечит установку зависимой библиотеки и сбой cmake, если это не так.
Вы можете найти множество примеров того, как это работает в вашей установке cmake, например, C:\Program Files\CMake\share\cmake-3.13\Modules\FindZLIB.cmake будет искать библиотеку zlib, посмотрев вфайловая система для обычных мест, где будет установлена ​​эта библиотека, и, если она найдет, она соответственно установит следующие переменные:

#   ZLIB_INCLUDE_DIRS   - where to find zlib.h, etc.
#   ZLIB_LIBRARIES      - List of libraries when using zlib.
#   ZLIB_FOUND          - True if zlib found.

Для достижения этого заголовочные файлы находятся с помощью команды cmake find_path и библиотек (статические и общие) находятся с использованием find_library.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...