Du you know CMAKE_CROSSCOMPILING_EMULATOR?
Let’s say you want to run your tests on a Raspberry Pi via SSH.
File: run_remote.sh
#!/usr/bin/env bash
set -e
TARGET_HOST="pi@192.168.1.42"
TARGET_DIR="/tmp/cmake_test"
REMOTE_BINARY="$TARGET_DIR/$(basename "$1")"
# 1. Copy binary to remote
ssh "$TARGET_HOST" "mkdir -p $TARGET_DIR"
scp "$1" "$TARGET_HOST:$REMOTE_BINARY"
# 2. Shift script args so remaining are test arguments
shift
# 3. Run binary on remote and forward stdout/stderr
ssh "$TARGET_HOST" "$REMOTE_BINARY" "$@"
Than you my use it like this:
set(CMAKE_CROSSCOMPILING_EMULATOR
${CMAKE_SOURCE_DIR}/run_remote.sh
CACHE STRING "Command to run executables on target")
add_executable(mytest test.cpp)
add_test(NAME mytest COMMAND mytest)