Как сделать пошаговую начальную сборку CMake с ExternalProjects? - PullRequest
0 голосов
/ 25 декабря 2018

То, чего я хочу добиться, - это пошаговая сборка всего проекта с зависимостями (как в Slicer).Как я понимаю, общая практика в сложных проектах CMake заключается в следующем:

1 $ cmake .. 

Он будет включать в себя все прямые зависимости, указанные с помощью ExternalProject_add, но, поскольку они изначально не установлены, существуетне будет <DependencyName>Config.cmake файлов, поэтому он не сможет правильно настроить основные файлы проекта в данный момент.

2 $ make 

Эта сборка будет только строить зависимости. Сборка основных файлов проекта не удастся , потому что CMake не может выполнить findPackage(<DependencyName>).

3 $ cmake ..

Поскольку все прямые зависимости установлены, CMake может правильно настроить основные файлы проекта, и ...

4 $ make

... успешно.

В моей организации мне сказали, что именно так работает CMake, и нет никакого способа обойти это, кроме грязных хаков, таких как кеширование <DependencyName>Config.cmake в основном проекте или полное не использование ExternalProjects.,Но я наткнулся на библиотеку Artichoke для CMake и проект Slicer , который использует ее для создания за один шаг как минимум двух десятков зависимостей, некоторые из которых имеют глубину более одного уровня.

Я до сих пор не до конца понимаю, как работает Артишок - (документация Артишока мне не очень помогает), но, по крайней мере, это вдохновило меня снова взглянуть на проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...