Правильный способ получить сборку из исходного кода в многокомпонентном проекте cmake

StackOverflow https://stackoverflow.com/questions/1230644

  •  22-07-2019
  •  | 
  •  

Вопрос

Я использую cmake для сборки, тестирования и установки моего проекта. Мой способ немного грубоват: я использую такие сценарии, чтобы получить сборку из исходного кода:

DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make 

Думаю, я мог бы по крайней мере поместить его в make-файл, но не странно ли использовать Makefile для запуска cmake для генерации новых Make-файлов и запуска другого make?

Как правильно это сделать? Есть ли у cmake возможность избежать вызова "cd"?

В последнее время все стало еще сложнее, поскольку я вычеркнул библиотеку, которую я хотел бы собирать, тестировать и распространять отдельно. Я хочу избежать дублирования всего, что у меня есть в моем топовом CMakeLists.txt.

Как это сделать правильно с помощью cmake?

Это было полезно?

Решение

Нет, у CMake нет такой опции. Мне обычно нравится иметь Makefile-обертку для управления вызовами CMake.

Основная проблема заключается в том, что генератор Makefile не поддерживает указание конфигурации при запуске make, как это делает генератор Visual Studio. Я думаю, что для этого подан запрос на добавление функции, но это будет очень инвазивной процедурой для исправления.

Другие советы

Кажется, это наиболее распространенная форма обработки этого. Я обычно видел (и использовал) пакетные сценарии (либо сценарии оболочки в Unix, либо просто пакетные файлы в Windows), чтобы справиться с этим, поэтому запуск ./build создаст папку сборки, CD там, запустит cmake, build, затем перейдет вернуться в исходную папку.

Можно также использовать CMake GUI, который автоматически создаст папку сборки, если она не существует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top