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 hago 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:
Al leer el inicio rápido de cmake , puede especificar una variable en una línea de comando:
cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ... De lo contrario, set el comando en el script cmake es probablemente lo que desea, consulte el manual de referencia . Para configurar la variable de entorno PATH, haz lo siguiente:
set(ENV{PATH} "/home/martink")Para establecer la variable normal, haga:
set(variable "value")No estoy seguro de cuáles tiene que configurar, probablemente los del entorno.
Dicho esto, establecer 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
La única forma de configurar un compilador y marcas para realizar una compilación cruzada de manera confiable con CMake es con un archivo de cadena de herramientas como se hizo en el tutorial que encontró.
Cuando enfrentamos el mismo problema que usted tiene (un conjunto de herramientas que produce una secuencia de comandos, así que configure el entorno de compilación), cambiamos el conjunto de herramientas de manera que produzca un archivo de cadena de herramientas junto con la secuencia de comandos.
En realidad, un archivo cmake-toolchain-file no cambia tan a menudo. Las banderas básicas utilizadas para el objetivo se fijan bastante temprano en un proyecto, normalmente. Y con CMAKE_BUILD_TYPE de CMake, puede alternar entre las compilaciones Debug y Release sin cambiar el archivo de la cadena de herramientas.
Si tiene diferentes objetivos para admitir, cree una cadena de herramientas diferente y use la compilación fuera de la fuente con CMake.
EDITAR : una cosa que podría hacer es invocar cmake con el argumento -D configurando las variables que desea y habiendo obtenido su secuencia de comandos antes:
source environment-setup-powerpc-linux cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etcEl resultado será idéntico a haber utilizado un archivo de cadena de herramientas.