Я использую некоторые библиотеки, которые я не хочу создавать как часть каждого проекта, который их использует. Очень понятным примером является LLVM, который имеет 78 статических библиотек. Даже наличие кода cmake для их поиска и импорта в каждом файле cmake чрезмерно.
Очевидным решением является использование команды "include" и вычитание соответствующих кусков cmake script в файлы *.cmake и настройка переменной среды CMAKE_MODULE_PATH.
Кроме того, это просто не работает. Cmake не находит файл, указанный в команде include.
В случае непредвиденных ситуаций я даже попытался указать путь в переменной среды несколькими способами - один раз с обратными косыми чертами, один раз с косой чертой... - и я перезапустил командную строку каждый раз и проверил, что переменная среды присутствует и правильно.
В руководстве cmake это подразумевает, что "файл" отличается от "модуля" - только модуль получает автоматическое лечение с добавлением-расширением и поиском. Но нет объяснения, в чем разница. Я догадался, что недостающего расширения может быть достаточно (как со стандартными модулями), но это явно не так.
Поиск руководства для "модуля" не очень помогает, поскольку слово, похоже, перегружено. Например, модуль также является динамической библиотекой, загруженной с использованием LoadLibrary/dl_open.
Может ли кто-нибудь объяснить, какая разница между файлом и модулем в этом контексте, и как я создаю свой собственный модуль, чтобы команда cmake могла найти и использовать его?
Я использую cmake 2.8.1 в Windows.
ИЗМЕНИТЬ
Я довольно уверен, что проблема здесь не в понимании того, как должен работать cmake. Я думаю, что я должен делать что-то, с чем может работать find_package
.
Как бы то ни было, я все еще не в состоянии ответить на свой вопрос.