Ausführen eines bash-Befehls via CMake

Ich bin versucht zu haben CMake entweder drei bash-Befehle oder ein bash-Skript. Allerdings kann ich nicht scheinen, um es zu arbeiten.

Die bash-Befehle sind:

    cd ${CMAKE_SOURCE_DIR}/dependencies/library
    make
    cd ${CMAKE_BINARY_DIR}

Im wesentlichen, ich möchte CMake bauen Sie die Bibliothek in das Verzeichnis, wenn es nicht bereits vorhanden ist.

Hier ist die CMake-code habe ich versucht:

if(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")
   execute_process(COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/library)
   execute_process(COMMAND make)
   execute_process(COMMAND cd ${CMAKE_BINARY_DIR})
endif(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")

Es ist jedoch nicht, dort etwas zu bauen. Was mache ich falsch?

Auch, während ich hier diese Frage: sollte der Dritte Befehl, zu bewegen, um die binary-Ordner enthalten sein?

Dank!

  • Erstens, warum bist Du nicht mit WORKING_DIRECTORY parameter anstelle der cd Befehle?So etwas wie execute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/library). Ich nehme an, execute_process() ruft nicht denselben Umgebung. Auch, wenn ich Sie wäre, würde ich check out the add_custom_target() und add_custom_command() für diese Art der Sache.
  • Ich kann nicht kommentieren, die meisten von dem, was @Kamiccolo gesagt, aber ich kann sagen, dass ich denke, die Details über execute_process nicht teilen, Zustand ist fast sicher richtig. Es ist unglaublich wahrscheinlich, dass die cd im ersten Befehl wechselt das Verzeichnis nur für diesen Prozess und nicht für irgendwelche anderen.
  • Wenn Sie beabsichtigen, zu bauen, eine Drittanbieter-Bibliothek, Sie sind wahrscheinlich besser mit der ExternalProject - Modul.
Schreibe einen Kommentar