CMake создает несколько целей в разных каталогах сборки
У меня есть следующая структура CMake:
CMakelists.txt
toolchain.cmake
folder1
----CMakelists.txt
folder2
----CMakelists.txt
etc..
Мой файл CMakelists.txt первого уровня включает в себя другие подкаталоги. Теперь я хочу построить свой код для другой цели.
Ручной способ это:
1.
mkdir hostBuild
cd hostBuild
cmake ..
make
2.
mkdir crossBuild
cd crossBuild
cmake .. --DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
make
Возможно ли, что этот процесс может выполняться автоматически?
Например, мне просто нужно бежать cmake .
на моем первом уровне.
Возможно ли что-то подобное?
1 ответ
Нет. Рекомендую просто поместить ваши ручные шаги в сценарий оболочки.
CMake может одновременно обрабатывать только одну среду компилятора /make (если вы переключаете компилятор, вам нужен другой каталог двоичного вывода).
Особенно файл инструментария, который содержит SET(CMAKE_SYSTEM_NAME ...)
меняет весь результат процесса конфигурации / генерации.
Для получения подробной информации о том, что CMake видит: CMake: В каком порядке анализируются файлы (Cache, Toolchain, …)?
И вы можете использовать некоторые параметры командной строки CMake в вашем скрипте оболочки:
if [ ! -d hostBuild ]; then
cmake -E make_directory hostBuild
cmake -E chdir hostBuild cmake ..
fi
cmake --build hostBuild
...