cmake "сделать установку" на удаленную машину? - PullRequest
7 голосов
/ 23 января 2012

С помощью make install я могу скопировать свои двоичные файлы, конфигурации и так далее в целевую папку для выполнения.

Теперь у меня следующая ситуация: у нас есть виртуальная машина, настроенная как узел сборки и другой настоящий Linux-компьютер в качестве целевой платформы .

Я бы хотел, чтобы make install копировал файлы непосредственно в папку на моей удаленной машине (через scp или аналогичную).Как мне этого добиться?

Ответы [ 5 ]

6 голосов
/ 23 января 2012

Вы часто можете сделать

 make install DESTDIR=/tmp/mydest/

, затем заархивировать этот каталог назначения

 tar czvf /tmp/mydest.tgz -C /tmp mydest

, а затем скопировать этот архив в удаленное место

 scp /tmp/mydest.tgz remote:tmp/

, наконец,распакуйте архив на пульте и скопируйте его в соответствующее место

2 голосов
/ 25 ноября 2015

Используя cmake 2.8.14, команда «add_custom_command» в CMakeLists.txt также может быть использована:

add_custom_command(TARGET my_target POST_BUILD COMMAND scp $<TARGET_FILE:my_target> user@remote_host:dest_dir_path )

Преимущество: вызывать только при восстановлении цели.

2 голосов
/ 23 января 2012

make может работать с определенным префиксом во время установки:

  make prefix=$dest/usr install

Решением вашей проблемы является

  • смонтируйте файловую систему целевого компьютера на вашем компьютере сборки. Это можно сделать через nfs (постоянный) или через sshfs (проще),
  • установите $ dest для точки монтирования и выполните команду выше
0 голосов
/ 31 января 2019

Я использую это решение:

install (CODE "execute_process(COMMAND scp -r -i /home/user/.ssh/id_rsa ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/. user@remote:/path/to/copy/)")

Затем я запускаю команду make install, и она работает

Я знаю, что $ {CMAKE_RUNTIME_OUTPUT_DIRECTORY} не лучшая переменнаядля него, но для меня это хорошо

0 голосов
/ 04 ноября 2018

С user профилем пользователя на машине remote и предварительно настроенным ключом ssh:

  install(CODE "execute_process(COMMAND /usr/bin/rsync -avh ${INSTALL_DIR} user@remote:/home/user/)")

Копирует локально установленные двоичные файлы на удаленный компьютер только при запуске make install.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...