Как установить свой собственный модуль CMake-Find
Я настраиваю и упаковываю свою библиотеку, используя CMake и CPack. Я написал свой собственный модуль поиска FindMyLib.cmake.
Как сказать CMake / CPack добавить этот файл в каталог модуля CMake, чтобы будущие разработчики могли просто указать FIND_PACKAGE(MyLib) для использования моей библиотеки?
3 ответа
Вы можете установить CMAKE_MODULE_PATH
и распространять свой обычай FindFoo.cmake
с вашим проектом. Например:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
Каталог модуля CMake является частью дерева установки самого CMake, и поэтому вы не должны пытаться что-либо там добавлять.
Каталог модулей CMake содержит модули, которые были написаны или, по крайней мере, проверены Kitware, и добавление своих собственных там создало бы впечатление у пользователей вашего проекта, что это относится и к вашему проекту.
Было бы лучше просто установить FindMyLib.cmake в одно из мест поиска find_package
:
<prefix>/ (Windows) <prefix>/(cmake|CMake)/ (Windows) <prefix>/<name>*/ (Windows) <prefix>/<name>*/(cmake|CMake)/ (Windows) <prefix>/(lib/<arch>|lib|share)/cmake/<name>*/ (Unix) <prefix>/(lib/<arch>|lib|share)/<name>*/ (Unix) <prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/ (Unix) <prefix>/<name>.framework/Resources/ (Apple) <prefix>/<name>.framework/Resources/CMake/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/ (Apple) <prefix>/<name>.framework/Versions/*/Resources/CMake/ (Apple) <prefix>/<name>.app/Contents/Resources/ (Apple) <prefix>/<name>.app/Contents/Resources/CMake/ (Apple)
Смотрите документацию дляfind_package
для получения полной информации о том, как find_package
поиск. Также в этом случае полезно руководство по упаковке CMake.
Лучший способ разрешить
будущие разработчики могут просто указать FIND_PACKAGE(MyLib) для использования моей библиотеки
это написать файл конфигурации пакета (-config.cmake), а не модуль Find. Затем файл конфигурации пакета должен быть установлен в одну из папок, где ищет модуль FindPackage (что-то вроде / lib / package / или / lib / cmake / package, вторая предпочтительнее)
Модуль FindPackage автоматически загрузит файл конфигурации, если сможет найти его там.
В вики CMake есть более подробные инструкции на https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Packaging