Проблема с установкой PATH в QProcess::setEnvironment |
Здравствуйте, гость ( Вход | Регистрация )
Проблема с установкой PATH в QProcess::setEnvironment |
Litkevich Yuriy |
23.2.2010, 6:16
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Наткнулся на проблему, суть которой понять не могу. С помощью QProcess хочу запустить консольную программу (git status). Однако в стандартном окружении (а именно в PATH) нет пути к её бинарю. Хотел добавить этот путь для QProcess с помощью QProcess::setEnvironment. Окружение изменяется, но git не запускается. Т.е. делаю так:
1) запускаю свою программу в командной строке (на Виндовозе), в ответ получаю своё отладочное сообщение "Process \"git status\" may not started" 2) В командной строке устанавливаю новое значение PATH (set PATH=%PATH%;path/to/git/bin;), а затем запускаю свою программу - она запускает git. Как делаю в коде? Отдельная фукция для задания пути к git'у: Сам код запуска git'а:
Окружение устанавливается перед process->start, это наверняка, так как выводил отладку:
Т.е. установка пути в PATH ни даёт ни какого эффекта, почему? ---- Виндовоз, Qt 4.4.3, MinGW32 |
|
|
BRE |
23.2.2010, 9:28
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Твое окружение передается запускаемому процессу (git), но оно никак не используется для твоем приложении, т.е. для поиска git.exe оно не используется.
Сообщение отредактировал BRE - 23.2.2010, 9:29 |
|
|
Litkevich Yuriy |
23.2.2010, 9:41
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Хорошо, а возможно ли как-то задать путь поиска?
в QProcess я вообще минимум функциональности вижу, скудноватый он какой-то. |
|
|
BRE |
23.2.2010, 9:45
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Litkevich Yuriy |
23.2.2010, 9:53
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
BRE |
23.2.2010, 10:02
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
просто это менее гибко на мой взгляд, чем использование переменной окружения PATH Почему, пользователь не задал в PATH путь до git, значит оно ему не надо. Можно попробовать добавлять свой путь в окружение и запускать git через командный интерпретатор, как-то так:
Тогда установленное окружение будет доступно в cmd и он будет их использовать для запуска git, но возможны другие трудности, например, с пайпами. |
|
|
zloyGamer |
23.2.2010, 10:45
Сообщение
#7
|
Студент Группа: Участник Сообщений: 22 Регистрация: 18.7.2009 Пользователь №: 917 Спасибо сказали: 0 раз(а) Репутация: 0 |
а можно заранее сформировать батник aga.bat - где все будет разложено по полочкам, типа:
Цитата SET PATH=%PATH%;/path/to/git/; git status process->start(QString("cmd.exe aga.bat")); или формировать этот батник из твоей программы и запускать )) |
|
|
SABROG |
23.2.2010, 12:12
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
В Qt 4.6 появился новый класс QProcessEnvironment
для ранних версий можно использовать не документированные функции qgetenv, qputenv о которых я писал давно в теме "Секреты и интересные возможности Qt" |
|
|
Текстовая версия | Сейчас: 20.4.2024, 6:12 |