Правильный способ разделения CMakeLists на подпроекты - PullRequest
0 голосов
/ 07 июля 2011

Какой идиоматический способ иметь несколько библиотек и несколько исполняемых файлов, которые являются взаимозависимыми, в одном cmake проекте и иметь cmake, вычислять межбиблиотечные зависимости и генерировать нерекурсивные make-файлы, так что пустая компиляция будетfast (по крайней мере для unix).

Этот пример выглядит устаревшим, на самом деле не работает в недавнем cmake и, похоже, генерирует рекурсивный make-файл.

1 Ответ

1 голос
/ 22 февраля 2012

Согласно CMake FAQ генерация рекурсивных Makefile-ов необходима по проекту:

CMake на самом деле не генерирует действительно рекурсивные make-файлы, которые следуют структуре каталогов.Он генерирует фиксированную трехуровневую структуру make-файла, в которой каждый уровень имеет определенное назначение:

  1. Makefile: Точки входа интерфейса командной строки.Карты «делают» вызовы в вызовах makefile уровня 2:
    • make -f CMakeFiles/Makefile2 ...
  2. CMakeFiles / Makefile2: Зависимости между целями.Оценивает цели в порядке зависимости, вызывая для каждой цели зависимости и шаги построения на уровне 3:
    • make -f CMakeFiles/$(target).dir/build.make .../depend
    • make -f CMakeFiles/$(target).dir/build.make .../build
  3. CMakeFiles / .dir / build.make: Зависимости и правила на уровне файлов:
    • depend: Оценивает пользовательские команды (для создания исходных файлов), а затем сканирует источники на предмет неявных зависимостей.
    • build: Загружает результаты сканирования зависимостей из предыдущего шага.Компиляции и ссылки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...