我正在尝试通过QProcess
运行命令,但它无效。我的命令类似于utility -someflag /path/to/file
。 utility
位于PATH中,但似乎QProcess
未使用此环境变量。
命令失败了,我需要指定实用程序的完整路径(我想避免)。
这有什么办法吗?基本上某些方法使QProcess
使用PATH变量?
答案 0 :(得分:0)
所以问题在于它取决于应用程序的启动方式。这是在OSX上,但在其他平台上可能类似:
如果它是一个命令行应用程序并从终端启动,那么它将可以访问env变量。
如果它是从Qt Creator启动的,它将无法访问任何env变量。
如果是GUI应用程序(.app),它将无法访问env变量。
我的案例中的解决方案,因为它是一个GUI应用程序,是手动更新.app包。首先需要更改 Info.plist 文件:
<key>CFBundleExecutable</key>
<string>MyApplication</string>
到此:
<key>CFBundleExecutable</key>
<string>MyApplication.sh</string>
然后,仍然在应用包中,在目录/ MacOS 中,创建一个与应用程序同名的新文件,但扩展名为.sh,例如。 “MyApplication.sh”。然后创建启动器:
#!/bin/sh
SCRIPT_DIR=$(dirname "$0")
source ~/.bash_profile
logger "$SCRIPT_DIR/MyApplication"
exec "$SCRIPT_DIR/MyApplication" $@
source ~/.bash_profile
行特别确保所有环境(包括PATH变量)都能正确设置。