cmake: définir les variables d'environnement à partir d'un script

j'ai un script qui définit toutes les variables nécessaires pour la compilation croisée. Ici c'est juste une partie de celui-ci :

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 je fais source environment-setup-powerpc-linux, toutes les variables d'environnement sont importées dans la session shell actuelle, et je peux compiler mon exemple.

Est-il possible d'importer ces variables cmake? Si oui, comment?


Un peu plus de détails :

  1. j'utilise ELDK V 5.4, et c'est install script génère un script qui définit toutes les variables d'environnement
  2. j'ai trouvé ce tutoriel, ce qui explique comment définir manuellement pour la compilation croisée, mais pas comment utiliser le script, qui définit tout
  3. si j'appelle le script avant de cmake, tout fonctionne bien, et je peux le cross-compiler, mais j'aimerais que cmake appelle le script
27
demandé sur BЈовић 2014-01-10 18:55:38

2 réponses

lire à travers le cmake de démarrage rapide, vous pouvez spécifier la variable sur une ligne de commande:

cmake -DVARIABLE1=value1 -DVARIABLE2=value2 ...

Sinon, set la commande dans le script cmake est probablement ce que vous voulez, voir le manuel de référence. Pour définir l' variable d'environnement CHEMIN, faire:

set(ENV{PATH} "/home/martink")

pour définir la variable normale, faites:

set(variable "value")

Je ne suis pas certain de ceux que vous devez mettre, probablement ceux de l'environnement.

cela dit, paramétrage de la variable d'environnement avant d'appeler cmake est souvent la solution la plus facile pour résoudre le problème, comme dans ce cas: https://stackoverflow.com/a/15053460/684229

55
répondu TMS 2017-05-23 10:31:23

la seule façon de configurer un compilateur et des options pour faire une compilation croisée de manière fiable avec CMake est avec une chaîne d'outils-fichier comme fait dans le tutoriel que vous avez trouvé.

lorsque nous avons fait face à la même question que vous (une boîte à outils qui produit un script de façon à configurer l'environnement de compilation) nous avons modifié la boîte à outils de manière à ce qu'elle produise un fichier-chaîne d'outils avec le script.

en réalité un fichier cmake-toolchain ne change pas si souvent. Les indicateurs de base utilisés pour la cible sont fixes très tôt dans un projet normalement. Et avec CMake CMAKE_BUILD_TYPE Vous pouvez basculer entre les compilations de débogage et de publication sans changer la chaîne d'outils-file.

si vous avez des cibles différentes à prendre en charge, créez une chaîne d'outils différente et utilisez L'option out-of-source-build avec CMake.

EDIT: une chose que vous pouvez faire est d'invoquer cmake avec le paramètre-d-argument paramétrant les variables que vous voulez et ayant obtenu votre script avant:

source environment-setup-powerpc-linux
cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX etc

Le résultat sera identique à avoir utilisé une chaîne de traitement de fichier.

4
répondu Patrick B. 2014-01-18 11:31:48