Как выбрать платформу или тулчейн при сборке в cmake?
Необходимо собрать библиотеку fmt под linux arm на x86ой машине c ubuntu 20.04 (использую кросс-компиляцию). Какие флаги необходимо передать в cmake? На машине стоит тулчейн arm-linux-gnueabihf. Всё что я нашёл, это флаг -A, но какой параметр туда передать, чтобы сборка началась при помощи нужного тулчейна, я не знаю.
Хочу обратить внимание что речь идёт не про скрипт cmake а про вызов команды cmake на исходный код библиотеки.
Ответы (1 шт):
Это делается где то так. Вначале нужно сделать (или раздобить) файл cmake для тулчейна. В документации есть пример. Вы глядит он где то так
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs)
set(CMAKE_STAGING_PREFIX /home/devel/stage)
set(tools /home/devel/gcc-4.7-linaro-rpi-gnueabihf)
set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
как по мне, то переменные там все очевидные. Можно добавить своих параметром по вкусу.
Теперь, когда такой файл есть, можно запускать вот так
cmake /path/to/cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchain/tools.cmake
и дальше как обычно.
Ещё почитать - https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/CrossCompiling