cmake: установка переменных среды из скрипта
у меня есть скрипт, который устанавливает все переменные, необходимые для кросс-компиляции. Вот только часть его:
export CONFIG_SITE=~/workspace/eldk-5.4/powerpc/site-config-powerpc-linux
export CC="powerpc-linux-gcc -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CXX="powerpc-linux-g++ -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export CPP="powerpc-linux-gcc -E -m32 -mhard-float --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export AS="powerpc-linux-as "
export LD="powerpc-linux-ld --sysroot=~/workspace/eldk-5.4/powerpc/sysroots/powerpc-linux"
export GDB=powerpc-linux-gdb
Если я делаю source environment-setup-powerpc-linux
, все переменные среды импортируются в текущий сеанс оболочки, и я могу скомпилировать свой пример.
можно ли импортировать эти переменные в CMake? Если да, то как?
немного подробнее :
- я использую ELDK v 5.4, и это сценарий установки генерирует сценарий который устанавливает все переменные среды
- нашел в этом уроке, который объясняет, как вручную установить для кросс-компиляции, но не как использовать скрипт, который устанавливает все
- если я вызываю скрипт перед установкой cmake, все работает нормально, и я могу скомпилировать, но я хотел бы, чтобы cmake вызывал скрипт
2 ответов
чтение cmake быстрый старт, можно указать переменную в командной строке:
cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...
иначе set
команда в сценарии cmake, вероятно, то, что вы хотите, см. справочник. Установить переменные среды путь, не так:
set(ENV{PATH} "/home/martink")
чтобы установить нормальную переменную, выполните:
set(variable "value")
не уверен, какие из них вы должны установить, вероятно, в окружающей среде.
что сказал, настройка переменной среды перед вызовом cmake часто является самым простым решением для решения проблемы, как в этом случае:https://stackoverflow.com/a/15053460/684229
единственный способ установить компилятор и флаги для надежной кросс-компиляции с CMake - это файл toolchain, как это сделано в учебнике, который вы нашли.
когда мы столкнулись с той же проблемой, что и у вас (инструментарий, который создает скрипт, поэтому устанавливает среду компиляции), мы изменили инструментарий таким образом, что он создает файл toolchain вместе со скриптом.
на самом деле cmake-toolchain-файл меняется не так часто. Основные флаги, используемые для цели, фиксированы довольно рано в проекте - нормально. И с-Х-Х CMAKE_BUILD_TYPE
вы можете переключаться между компиляциями Debug и Release без изменения файла toolchain.
Если у вас есть разные цели для поддержки, создайте другую цепочку инструментов и используйте сборку вне источника с CMake.
редактировать: одна вещь, которую вы можете сделать, это вызвать cmake С-D-аргументом, устанавливающим переменные, которые вы хотите, и получив свой скрипт раньше:
source environment-setup-powerpc-linux
cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc
результат будет идентично использованию toolchain-файла.