Mit cmake-variable in execute_process Befehl in der cmake-Datei
Ich bin mit execute_process()
Funktion in 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 )
Alles wird perfekt angezeigt als Ergebnis message()
Befehl, aber es führt zu Fehlern beim ausführen während der Analyse cmake
. Ich denke, die FLAGS
variable dehnt sich nicht wie erwartet während der Analyse. Wenn ich das gleiche EXECUTE_COMMAND
angezeigt wird, und ein Ergebnis von message
Befehl im terminal es läuft perfekt. was könnte das Problem sein ?
Bearbeiten:
Ich habe entfernt ${FLAGS}
aus
set ( EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld" )`
jetzt bin ich mit
set ( EXECUTE_COMMAND "arm-none-eabi-gcc -E -P -x c-header ${SCATTERFILE} " )
Ausgabe:
EXECUTE_COMMAND arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv: No such File or directory.
Wenn ich geben Sie einfach diesen Befehl auf dem terminal,
arm-none-eabi-gcc -E -P -x-c-header ~/scatterFile.scatter
führt und gibt die erwarteten Ergebnisse.
Wer meldet einen Fehler? CMake oder der ausgeführte Prozess? Bitte geben Sie die Ausgabe Ihres CMake ausgeführt
der Prozess ausgeführt
Also bitte geben Sie den relevanten Teil der CMake-Ausgang (einschließlich der
Die tilde wird erweitert durch die shell. Es ist nicht ein Gültiger Dateiname für cmake.
der Prozess ausgeführt
Also bitte geben Sie den relevanten Teil der CMake-Ausgang (einschließlich der
MESSAGE
Ausgabe und der Fehlermeldung)Die tilde wird erweitert durch die shell. Es ist nicht ein Gültiger Dateiname für cmake.
InformationsquelleAutor theadnangondal | 2015-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, Sie versuchen zum ausführen eines Programms mit dem Namen "
arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv
". Beachten Sie die syntax vonexecute_process()
:Um es noch klarer, das documentatin könnte tatsächlich schreiben als:
CMake erwartet, dass der name des Befehls, wie man CMake argument und jede Kommandozeilen-argument als ein weiteres separates CMake argument. Sie umschließt alles, was in Anführungszeichen gesetzt, jedoch schaltet es in eine CMake-argument (mit vielen Leerzeichen). Ändern Sie Ihren code wie folgt:
Wo beobachtet man die Semikolons? In der
message()
Ausgabe, oder in die tatsächliche Befehlszeile ausgeführt? Diese sind sehr verschiedene Dinge.message() - Ausgang, aber es gibt auch Fehler in der Ausführung über die Befehlszeile. Inklusive Datei nicht gefunden und -x c-header hat keine Wirkung, nachdem die Letzte Datei
Zu tun haben könnte mit Ihrem Inhalt
FLAGS
schwer zu sagen, ohne einen vollständige Reproduktion Beispiel. Können Sie ersetzen Siearm-none-eabi-gcc
mit einem test-Skript, das Ihnen ermöglicht zu überprüfen den tatsächlichen Inhalt der einzelnen command-line-argument, so dass Sie überprüfen können, was Sie übergeben haben?Hm, seltsam. Bearbeiten können Sie die Frage mit einschließen, die Art und Weise, die Sie festlegen
SCATTERFILE
sowie die Ausgabe der argument-drucken von Schrift, wie ich vermutete? So etwas wie Python.InformationsquelleAutor Angew