cmake: Fehlgeschlagenen build erkennen?



  • Ich rufe cmake innerhalb einer *.sh-Datei so auf:

    cmake -DCMAKE_BUILD_TYPE=Debug

    Was mir fehlt ist sowas wie ein Rückgabewert oder ein Flag, das von cmake gesetzt wird, falls der Build fehlschlägt (Syntaxerror, Bibliotheken fehlen whatever). So dass ich dann in der *.sh darauf reagieren kann, z.B. so:

    if(cmakeResult == FAIL)
        exit 1
    else
       exit 0
    


  • Also ich ruf cmake regelmaessig auf mit

    cmake %SOURCEDIR% -G "Visual Studio 2010" -D(NE Ganze Menge CMake flags ...)

    und wenn was ned funzt, gibt er ungleich 0 zurueck (ERRORLEVEL wird gesetzt).
    bauen geht dann auch mit

    cmake ./ --build --Target Release
    cmake ./ --build --Target Debug

    unter windows funzt es scheinbar einwandfrei ... keine ahnung warum bei dir auf *nix ned ... Glaub kaum das sie die WIndows befehlzeile besser unterstützen als die *nix Shell ^^

    ciao ...



  • Was genau fehlt dir denn? Der Exitstatus selbst kanns jedenfalls nicht sein und Cmake benutzt ihn auch sinnvoll. Fehlt dir das Wissen, wie du ihn in einem Shellskript überprüfst?

    Nun, du könntest deinem Shellskript ein 'set -e' verpassen. Dies führt dazu, dass es beim ersten fehlschlagenden Command abbricht. Für eine Buildumgebung ist das meist das gewünschte.

    Ansonsten:

    cmake blah && echo success
    cmake blah || echo fail
    
    if cmake blah; then
            echo success
    fi
    
    if ! cmake blah; then
            echo fail
    fi
    
    cmake blah
    if [ $? -eq 0 ]; then
         echo success
    fi
    
    cmake blah
    /bin/true
    # $? ist der Exitcode von /bin/true, nicht von cmake
    

    Alles natürlich für Bourne-kompatible Shells.


Anmelden zum Antworten