Gibt es eine Möglichkeit, eine Variable in einem CMake-Skript auf die Ausgabe eines Shell-Befehls festzulegen? So etwas SET(FOO COMMAND "echo bar")
würde mir in den Sinn kommen
Antworten:
Sie wollen den execute_process
Befehl.
In Ihrem Fall unter Windows:
execute_process(COMMAND CMD /c echo bar OUTPUT_VARIABLE FOO)
oder unter Linux einfach:
execute_process(COMMAND echo bar OUTPUT_VARIABLE FOO)
In diesem speziellen Fall bietet CMake eine plattformübergreifende Lösung. CMake kann selbst verwendet werden, um Befehle auszuführen, die auf allen Systemen verwendet werden können, von denen eines ist echo
. Zu diesem Zweck sollte CMake das Befehlszeilenargument übergeben werden -E
. Führen Sie die vollständige Liste dieser Befehle auscmake -E help
In einem CMake-Skript wird auf die ausführbare CMake-Datei verwiesen ${CMAKE_COMMAND}
, daher muss das Skript Folgendes tun:
execute_process(COMMAND ${CMAKE_COMMAND} -E echo bar OUTPUT_VARIABLE FOO)
OUTPUT_STRIP_TRAILING_WHITESPACE
ist mehr oder weniger erforderlich IMO
COMMAND bash "-c" "your_complex.sh | command && stuff"
. Bildnachweis