[Qt-creator] file not found for mounted drive
orgads at gmail.com
Fri Oct 3 09:52:51 CEST 2014
On Fri, Oct 3, 2014 at 2:51 AM, Mohammad Mirzadeh <mirzadeh at gmail.com>
> Hi guys,
> I have to work with remote files on a server that has its own toolchain.
> As a result I have configured the project on the server, having its own
> .pro and Makefile.
> I'd like to be able to edit and build them remotely on my machine. The
> trick i have played here is mounted the server through sshfs and create a
> local dummy project that reads the file on the mounted server. To enable
> remote building I have created a custom build target like this:
> remote_build.target = remote_build
> remote_build.commands = ssh server "make -C $$REMOTE_BUILD_DIR"
> QMAKE_EXTRA_TARGETS += remote_build
> this does build the project fine. However, I am not able to use QtCreator
> to jump to errors warnings etc since all the error messages have relative
> path on the server. I tried to go around this by the following hack:
> remote_build.commands = ssh server "make -C $$REMOTE_BUILD_DIR 2>stderr
> 1>stdout; sed -i 's/server_path/locally_mounted_path/g' stderr stdout; cat
> stdout; cat stderr 1>&2"
> Now when I build, the error messages do point to the file which is mounted
> locally and is open in the editor window. However, QtCreator still cannot
> jump to the file, complaining that it does not exist.
> Is what i'm trying to do even feasible? is there any better way of
> achieving this? I would really LOVE if Qt Creator had a built-in way of
> building remote targets.
> Qt-creator mailing list
> Qt-creator at qt-project.org
I wrote the following helper script for a similar use-case. Use it as a
proxy for your build command. Should be something like:
remote_build.commands = ssh server "cd $$REMOTE_BUILD_DIR &&
./translate_err.sh \"$$PWD\" make"
set -o pipefail
if [ "x$WINDOWS" = "x1" ]; then
# Runs $2 (e.g. ./build.sh), and translates paths in stderr from local to
remote (given by $1) path
if [ $# -lt 2 ]; then
echo "usage: $0 <local_path> <build_script> [arguments]"
# Change if script is executed inside a subdirectory
# Windows -> revert backslashes
if echo $1 | grep -q '^.:'; then
REMOTE="$(echo "$1" | sed 's|\\|/|g')"
# redirect stderr to stdout and stdout to 3, then restore stdout to stderr
$RUN "$@" 2>&1 1>&3 | sed "s|$LOCAL|$REMOTE|g" | normalize 1>&2
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Qt-creator