linux - comando - cmake: establecer variables de entorno desde un script
variables de entorno linux (2)
Al leer el inicio rápido de cmake , puede especificar la variable en una línea de comando:
cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...
De lo contrario, set
comando en el script cmake es probablemente lo que desea, consulte el manual de referencia . Para establecer la variable de entorno PATH, haga:
set(ENV{PATH} "/home/martink")
Para establecer la variable normal, haga:
set(variable "value")
No estoy seguro de cuáles tienes que configurar, probablemente los de entorno.
Dicho esto, configurar la variable de entorno antes de llamar a cmake suele ser la solución más fácil para resolver el problema, como en este caso: https://stackoverflow.com/a/15053460/684229
Tengo un script que establece todas las variables necesarias para la compilación cruzada. Aquí es sólo una parte de ella:
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
Si realizo el source environment-setup-powerpc-linux
, todas las variables de entorno se importan a la sesión de shell actual y puedo compilar mi ejemplo.
¿Es posible importar estas variables en cmake? Si es así, ¿cómo?
Un poco más de detalles:
- Estoy usando ELDK v 5.4 , y su script de instalación genera un script que establece todas las variables de entorno
- Encontré este tutorial , que explica cómo configurar manualmente la compilación cruzada, pero no cómo usar el script, que establece todo
- Si llamo al script antes de configurar cmake, todo funciona bien y puedo compilarlo de forma cruzada, pero me gustaría que cmake llame al script.
La única forma de configurar un compilador y las marcas para realizar una compilación cruzada de manera confiable con CMake es con un archivo de cadena de herramientas como se hace en el tutorial que ha encontrado.
Cuando enfrentamos el mismo problema que tiene (un kit de herramientas que produce un script para configurar el entorno de compilación), cambiamos el kit de herramientas de manera que produzca un archivo de cadena de herramientas junto con el script.
En realidad, un archivo cmake-toolchain-file no cambia tan a menudo. Las banderas básicas utilizadas para el objetivo se fijan bastante pronto en un proyecto, normalmente. Y con CMAKE_BUILD_TYPE
de CMake puede cambiar entre las compilaciones Debug y Release sin cambiar el archivo de la cadena de herramientas.
Si tiene diferentes objetivos que respaldar, cree una cadena de herramientas diferente y use la compilación fuera de origen con CMake.
EDITAR : Una cosa que podría hacer es invocar cmake con el argumento -D estableciendo las variables que desea y habiendo obtenido su script antes:
source environment-setup-powerpc-linux
cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc
El resultado será idéntico a haber utilizado un archivo de cadena de herramientas.