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

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

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

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

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

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

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

3 ответа

Решение

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

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

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

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

Другие вопросы по тегам