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