У меня есть внешняя зависимость (заголовки и общие библиотеки, а также файл version.txt
в известном месте установки) для моего проекта.Эта зависимость не имеет встроенной поддержки CMake find_package()
.После прочтения find_package()
документов и этого ответа SO я понимаю, что мне следует использовать режим модуля для find_package()
.В каталоге Find*.cmake
cmake
я предполагаю, что он должен:
- Установить и проверить пути к заголовку и общим библиотекам
- Читать в файле версии
- Определение проекта с использованием текста файла версии
- Добавление цели библиотеки интерфейса (
${PROJECT_NAME}
) - Добавление псевдонима в библиотеку интерфейса с использованием пространства имен (
${MY_NAMESPACE}
) - Добавление цели библиотеки для каждого пути к общей библиотеке
- Установка свойства импортированного пути для каждой общей библиотеки
- Связывание общих библиотек с целью библиотеки интерфейса
- Ссылкакаталог include для целевой библиотеки интерфейса
export(TARGETS ${PROJECT_NAME} NAMESPACE ${MY_NAMESPACE}::)
export(PACKAGE ${PROJECT_NAME})
- Прибыль?
Я делаю это правильно и /или правильный подход?