我试图通过QProcess
运行一个命令,但它不工作。我的命令类似于utility -someflag /path/to/file
。 utility
在PATH中,但看起来QProcess
没有使用这个环境变量。在PATH中找到运行命令?
该命令只是失败,我需要指定该实用程序的完整路径(我想避免)。
有没有办法解决这个问题?基本上有些方法可以使QProcess
使用PATH变量?
我试图通过QProcess
运行一个命令,但它不工作。我的命令类似于utility -someflag /path/to/file
。 utility
在PATH中,但看起来QProcess
没有使用这个环境变量。在PATH中找到运行命令?
该命令只是失败,我需要指定该实用程序的完整路径(我想避免)。
有没有办法解决这个问题?基本上有些方法可以使QProcess
使用PATH变量?
所以问题在于它取决于应用程序的启动方式。这是在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" [email protected]
的source ~/.bash_profile
线特别是确保所有的环境(包括PATH变量)将被正确设置。