CMake, когда используете FindFoo.cmake или FooConfig.cmake (и другие уточнения)

0

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

Я хотел бы настроить среду для здания, где можно использовать некоторые из хороших библиотек, которые я обычно использую (Qt, OpenGL, OpenCV и т.д.), И я могу легко писать как приложения, так и модули (назовем их модулями, пока) для использования в приложениях.

Структура папок, которую я имею в виду, это что-то вроде:

/apps/app_with_foo_and_qt_gui
/apps/app_with_foo
/apps/app_with_foo_and_foo1
/modules/foo
/modules/foo1

от того, что я получаю, мне нужно в приложениях использовать команду find_package для включения в foo или foo1, но я считаю, что кажется, что эта команда ищет файл поиска или конфига, и я не понял разницу между ними.

Тогда, моя идея состоит в том, чтобы иметь в каждом из моего модуля built папку, куда поместить скомпилированную часть модуля (для того, чтобы не компилировать его каждый раз, когда я скомпилирую приложение, которое его использует), и тестовую папку, куда следует поставить тест. Но мне не очень понятно, как скомпилировать тесты.

Некоторые разъяснения?

Теги:
cmake

1 ответ

1

Что касается Find *.cmake и Config.cmake, эти два файла выполняют ту же задачу поиска и предоставления информации о пакете. Однако существует способ взаимодействия. С помощью файлов Find.cmake CMake будет использовать их для поиска различных деталей. Например, файл CMake FindQt4.cmake будет искать вашу систему для qmake и использовать для этого различные переменные для использования Qt4 с CMake. С другой стороны, файлы * Config.cmake содержат предопределенные данные о том, где существуют различные части пакета в системе. Например, если файл Qt4Config.cmake существует, он не будет запрашивать qmake для путей, но вместо этого содержит предварительно вычисленные пути для Qt4. Более подробную информацию см. В документации CMake о find_package.

Таким образом, моя рекомендация для вашей структуры проекта также имеет foo и foo1, устанавливаемые как системные библиотеки, и используйте файл Config.cmake, чтобы найти различные сведения о них. Обратите внимание, что вам не нужно устанавливать библиотеки foo в систему, вместо этого вы можете просто установить их в локальный каталог (либо встроенную папку, либо общее местоположение, такое как /modules/install и т.д.).

Затем каждое приложение может просто запрашивать соответствующие фрагменты, используя CMake find_package.

Для создания файлов * Config.cmake у CMake есть документация, расположенная здесь.

  • 0
    хорошо, спасибо, но мне не нужно их устанавливать, мне просто нужен более простой способ загрузить их из другого приложения
  • 0
    Возможно, вы сможете получить файл * Config.cmake для работы с папкой сборки, так как на самом деле его не волнует установка. Он просто записывает информацию. Тем не менее, я бы порекомендовал установить библиотеки в любом случае. Таким образом, вы можете заниматься разработкой библиотек, не влияя на код вашей программы. Как я уже говорил, вам не нужно устанавливать всю систему, локальная папка будет работать нормально. Я лично использую папку ~ / install для хранения таких вещей.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню