Как выбрать платформу или тулчейн при сборке в cmake?

Необходимо собрать библиотеку fmt под linux arm на x86ой машине c ubuntu 20.04 (использую кросс-компиляцию). Какие флаги необходимо передать в cmake? На машине стоит тулчейн arm-linux-gnueabihf. Всё что я нашёл, это флаг -A, но какой параметр туда передать, чтобы сборка началась при помощи нужного тулчейна, я не знаю.

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


Ответы (1 шт):

Автор решения: KoVadim

Это делается где то так. Вначале нужно сделать (или раздобить) файл 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

→ Ссылка