J'ai un projet CMake qui permet à une variable définie globalement (définie avec -DARDUINO_SDK_PATH=/a/b/c
sur la ligne de commande) de disparaître, c'est-à-dire de supprimer soudainement la valeur donnée, ce qui conduit à une erreur fatale.Comment une variable CMake peut-elle être cachée?
Je sais qu'il sont différentes façons de « cacher » une variable (par exemple des fonctions à l'intérieur ou des projets externes)
Dans mon cas:
- la variable n'est pas défini explicitement partout dans le code (par exemple via
set()
oufind_path()
) - l'accès qui conduit à l'erreur est au niveau supérieur (c'est-à-dire pas à l'intérieur d'une fonction)
- il existe des instructions (c.-à-d. même fichier/ligne) où dans un cas la variable a la valeur qu'il a été donné et la prochaine fois, il est parti
Tracing la variable avec variable_watch(ARDUINO_SDK_PATH)
je peux voir que tout fonctionne bien avant que le compilateur est en cours de vérification:
cmake -DARDUINO_SDK_PATH=/a/b/c <path>
...
... everything fine, ${DARDUINO_SDK_PATH} == '/a/b/c' everywhere
...
-- Check for working C compiler: /usr/bin/avr-gcc
...
... here the variable is empty and not being traced any more
...
Voici ma suggestion: le contrôle du compilateur (indiqué par check for working C compiler ..
sur le terminal) ont son propre espace variable et ne connaît pas les variables fournies sur la ligne de commande?
Note: Cette question est une généralisation de la question this, qui est devenue beaucoup trop spécialisée, mais pourrait offrir quelques informations de base utiles.