Как настроить приложение Qt для использования фактических переменных среды Unix-подобной системы? - PullRequest
0 голосов
/ 05 сентября 2018

Я создаю приложение Qt GUI с использованием библиотеки, которая ищет переменную среды PATH для определенных исполняемых файлов, а именно, компиляторов, make и cmake. Проблема в том, что std :: getenv ("PATH") возвращает что-то другое в графическом интерфейсе, и некоторые исполняемые файлы пропускаются. Я пытался использовать класс QProcessEnvironment для установки PATH, однако возникает та же проблема. Я могу установить для него конкретные пути на моей машине, но было бы здорово, если бы он мог получить PATH любой машины, на которой развернуто приложение. Странно, если я запускаю графический интерфейс с помощью командной строки, все работает отлично! Хотя я считаю необоснованным просить пользователей открывать графический интерфейс с помощью командной строки.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 сентября 2018

Эта проблема не имеет ничего общего с Qt. Вы установили PATH, используя сценарии инициализации оболочки и т. Д., В своей собственной папке пользователя. Для графической оболочки было бы ужасно плохой идеей использовать этот путь, поскольку ошибка в вашем профиле оболочки может привести к тому, что весь рабочий стол станет неработоспособным. Конечно, это работает из командной строки, поскольку ваши профили оболочки вступают в силу.

В качестве опции конфигурации пользователя вы можете извлечь PATH оболочки, запустив эквивалент $SHELL -c 'echo $PATH' пользователя и обработав результат.

В противном случае вам придется отложить то, что принято на платформе, и при необходимости проконсультироваться с менеджерами пакетов. Различные системы пакетов, как правило, устанавливают эти инструменты в разные каталоги, но есть только несколько общих. Я предполагаю, что этого будет достаточно, чтобы охватить Ubuntu, RedHat, macports и homebrew, а также убедиться, что вы также отметили «чистые» местоположения FHS (Стандарт иерархии файловых систем).

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