我試圖通過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變量)將被正確設置。