Utilisation de cmake variable dans execute_process commande cmake fichier
Je suis en utilisant execute_process()
fonction dans cmake
.
message(" FLAGS = ${FLAGS}")
message(" SCATTERFILE = ${SCATTERFILE}")
set ( EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld" )
message("EXECUTE_COMMAND = ${EXECUTE_COMMAND}")
execute_process(COMMAND ${EXECUTE_COMMAND} RESULT_VARIABLE rv )
Tout s'affiche parfaitement comme un résultat de message()
de commande, mais il provoque des erreurs lorsqu'il est exécuté lors de l'analyse cmake
. Je pense que le FLAGS
variable n'est pas en expansion comme prévu lors de l'analyse. Quand je lance le même EXECUTE_COMMAND
, qui s'affiche comme un résultat de message
de commande dans le terminal, il fonctionne parfaitement. quel pourrait être le problème ?
Edit:
J'ai supprimé ${FLAGS}
de
set ( EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld" )`
maintenant, je suis en utilisant
set ( EXECUTE_COMMAND "arm-none-eabi-gcc -E -P -x c-header ${SCATTERFILE} " )
La sortie est:
EXECUTE_COMMAND arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv: No such File or directory.
Si j'ai simplement entrez cette commande dans le terminal,
arm-none-eabi-gcc-E -P -x c-d'en-tête de ~/scatterFile.scatter
il s'exécute et donne les résultats attendus.
le processus exécuté
Merci donc de fournir à la partie pertinente de la CMake sortie (y compris les
MESSAGE
de sortie et le message d'erreur)Le tilde est élargi par votre shell. Ce n'est pas un fichier valide pour cmake.
OriginalL'auteur theadnangondal | 2015-01-20
Vous devez vous connecter pour publier un commentaire.
Le problème est que vous essayez d'exécuter un programme nommé "
arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv
". Notez que la syntaxe deexecute_process()
:Pour le rendre encore plus clair, le documentatin pourrait effectivement écrire comme:
CMake attend le nom de la commande que l'on CMake argument et chaque argument de ligne de commande comme une autre CMake argument. Vous êtes en joignant tout devis, cependant, qui le transforme en un CMake argument (contenant beaucoup d'espaces). Modifier votre code comme suit:
Où avez-vous observer les points-virgules? Dans le
message()
de sortie, ou la ligne de commande exécutée? Ceux-ci sont très des choses différentes.message() sortie mais il y a aussi des erreurs dans l'exécution de ligne de commande. L'inclusion de fichier non trouvé et -x c-d'en-tête n'a pas d'effet après le dernier fichier
Pourrait avoir à faire avec votre contenu de
FLAGS
, difficile à dire sans une complet reproduire exemple. Pouvez-vous remplacerarm-none-eabi-gcc
avec un script de test qui va vous permettre d'inspecter le contenu réel de chaque argument de ligne de commande de sorte que vous pouvez vérifier ce que vous êtes de passage?Hm, bizarre. Pouvez-vous modifier la question de la façon dont vous définissez
SCATTERFILE
, ainsi que la sortie d'un argument-script d'impression, comme je l'ai suggéré? Quelque chose comme Python.OriginalL'auteur Angew