Remote compilation with Qt Creator

  • Qt Champions 2017


    I have a remote linux server that performs compilation for a board. I access it using ssh.

    I created a pro file that contains all sources and headers that are used in the project, and wrote a Makefile that redirects the build to that server, and used it in Qt Creator (skipping qmake step).

    The source tree on the local machine is exactly the same as the target server.

    The make command works, but Qt Creator doesn't parse the error messages (the remote compiler is gcc).

    Is there a way to make Qt Creator understand the build issues, and display them in the corresponding window?


  • Moderators

    When this happens then the build system is usually forwarding gcc's stderr output to stdout. Our parsers do not detect it there and thus the issues go unnoticed by Qt Creator.

    Why did you need to fiddle with the Makefile by the way? I think it should be enough to have two small shell scripts that run qmake/make on the remote server for you and have Qt Creator pick them up in place of qmake/make.

  • Qt Champions 2017

    The target project is built using some scripts, including chrooting and cross-compiling. It is not a normal Makefile project...

    Is there a way to make it remain in stderr?

  • Moderators

    Mostly by making sure to not redirect stdout to stderr someplace:-)

  • Qt Champions 2017

    I'm not redirecting, I'm running ssh -t -t...

  • Moderators

    Just run make and "make WHATEVER OPTIONS > /tmp/stdout 2> /tmp/stderr" and make sure the warnings do show up ion /tmp/stderr. If that works then Qt Creator should also report the issues properly.

    If it does nto then I'd go onto the remote machine and check there again.

  • Qt Champions 2017

    I wrote a small script:
    echo stdout
    echo stderr 1>&2

    I tested it - locally or when running through ssh (without -t), it writes to stderr, using ssh -t, it writes to stdout...

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.