Правильный способ получить сборку из исходного кода в многочастном проекте 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, который автоматически создаст папку сборки, если она не существует.