Как распространять FindXXX.cmake - PullRequest
4 голосов
/ 05 июля 2011

У меня есть проект CMake, который генерирует библиотеку. Я написал сценарий CMake FindXXX.cmake, чтобы помочь пользователям моей библиотеки. Таким образом, они могут использовать find_package (XXX) и получить необходимые переменные. Пока все хорошо.

Проблема теперь в том, что пользователи скопировали этот FindXXX.cmake в свои собственные проекты. Если я изменю это, они будут придерживаться прежнего.

Есть ли распространенный способ распространения такого скрипта? Должен ли мой установщик поместить его в какое-то специальное место, чтобы CMake нашел его, не заставляя пользователей копировать его в свой проект?

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Попробуйте скопировать в ${CMAKE_ROOT}/Modules. Вам могут потребоваться права системного администратора.

Другим решением может быть добавление некоторой записи реестра в Windows: HKEY_CURRENT_USER\Software\Kitware\CMakeSetup\Settings\StartPath. Вам следует добавить следующее значение WhereBuild{i} в файлы вашего проекта CMake. Хитрость в том, что CMake ищет известные библиотеки из ранее использованных библиотек.

На основании предлагаемой документации :

Вы должны создать следующую библиотеку и скопировать FindProjectName.cmake: C: \ Program Files \ ProjectName \ CMake в Windows, / usr / local / ProjectName / share / cmake в Linux.

2 голосов
/ 06 июля 2011

На самом деле, при копировании файла FindXXX.cmake в $ {CMAKE_ROOT} / модули будут работать, есть несколько других мест, где ваш проект может поместить «файл конфигурации проекта», вместо которых CMake найдет его автоматически без файл FindXXX.cmake.

Согласно документации find_package вы можете установить файл конфигурации проекта в свое собственное дерево установки, и CMake найдет его, если дерево установки находится в одном из «обычных» "локации.

Найдите текст на этой странице, который начинается с "CMake создает набор возможных префиксов установки для пакета", чтобы увидеть подробную информацию о том, где можно установить файл конфигурации проекта, чтобы CMake нашел его автоматически.

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