Нет доступа к переменным среды при удаленной компиляции с использованием Code :: Blocks, plink и make-файлов

Я пытаюсь настроить Code :: Blocks под Windows 7 Professional SP1 для удаленной компиляции (используя ссылку PuTTY -> plink) на сервере Linux, но я не очень хорошо знаком с этой темой. Это руководство, которое я использовал:

http://wiki.codeblocks.org/index.php?title=Using_Xming_for_remote_compilation

Я настроил блоки кода следующим образом:


Настройки-> Компилятор и отладчик-> Глобальные настройки компилятора-> Исполняемые файлы Toolchain:

Программные файлы-> Сделать программу: plink.exe


Проект-> Свойства-> Настройки проекта:

Makefile: makefile_name

[проверено] Это настраиваемый файл makefile

Направление выполнения: Z: \ Path \ to \ Samba \ Share


Параметры сборки проекта -> Отладка -> Команды "Сделать":

Построить проект / цель:

$make -X -ssh user@linux_server -pw my_great_password make -f $makefile -C /path/to/my/makefile

Скомпилировать один файл:

$make -X -ssh user@linux_server -pw my_great_password make -f $makefile -C /path/to/my/makefile $file

Чистый проект / цель:

$make -X -ssh user@linux_server -pw my_great_password make -f $makefile clean -C /path/to/my/makefile

Спросите, нужна ли перестройка:

$make -X -ssh user@linux_server -pw my_great_password make -q -f $makefile -C /path/to/my/makefile

Тихая сборка:

$make -X -ssh user@linux_server -pw my_great_password make -s -f $makefile -C /path/to/my/makefile

Кстати, могу ли я вызвать компилятор / компоновщик на сервере Linux или Code :: Blocks сам компилирует и связывает исходный код на сервере Linux? Простите за незнание.


Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу получить доступ к переменным среды в make-файле:

include $(MY_ENV_VAR)/path/to/another/makefile

Ошибка, которую я получаю, позволяет предположить, что MY_ENV_VAR остается пустым:

/path/to/another/makefile: No such file or directory

Я проверил, пытается ли Code :: Blocks разрешить переменную среды моего компьютера с Windows, но это не так.


Дополнительная информация:

Версия Code :: Blocks:

Version: 10.05, Build: May 27 2010, 19:10:05 - wx2.8.10 (Windows, unicode) - 32 bit

Сервер Linux:

Linux linux_server 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

При необходимости я могу предоставить дополнительную информацию. Я также приветствую другие предложения по реализации удаленной компиляции на Linux-машине из Windows. Или для удаленной компиляции больше подходит другая IDE?

Спасибо за чтение / помощь.


Редактировать:

Я обнаружил, что у кого-то похожая проблема с IDE NetBeans:

http://forums.netbeans.org/topic37974.html


person fondor    schedule 15.05.2012    source источник


Ответы (1)


Согласно этому сообщению о переполнении стека и это сообщение fixunix Я понял, что это plink не выполняет сценарии запуска, как это бывает при подключении через шпатлевку. Итак, я понял, что Code :: Blocks невиновен в моих трудностях при удаленной компиляции.

В моем случае мне пришлось явно указать скрипт входа ~/.login, чтобы получить доступ к моим переменным среды. Например, для команды make это будет означать:

$make -X -ssh user@linux_server -pw my_great_password "source ~/.login;make -f $makefile" -C /path/to/my/makefile

Таким образом удалось удаленно скомпилировать мое программное обеспечение. Чтобы запустить приложение, я добавил шаг после сборки:

cmd /c "C:\Program^ Files\PuTTY\putty.exe -load my_session -pw my_great_password"

В пароле мне пришлось экранировать символ амперсанда: ^& (кстати, есть много причин использовать закрытый ключ вместо жестко запрограммированного пароля). Это загружает сохраненный сеанс PuTTY, в котором есть следующие удаленные команды:

source ~/.login;/path/to/my/application/my_application;$<

Я использую оболочку C. Поэтому я использовал $<, чтобы дождаться ввода пользователя (клавиша ввода). Теперь я могу скомпилировать и запустить свое приложение, нажав кнопку сборки. Надеюсь, это поможет другим настроить Code :: Blocks для удаленной компиляции. Просто оставьте комментарий, если у вас возникнут дальнейшие проблемы или вы хотите предоставить дополнительную информацию / совет.

person fondor    schedule 25.05.2012