2014-06-15 4 views
1

QProcess을 통해 명령을 실행하려고하는데 작동하지 않습니다. 내 명령은 utility -someflag /path/to/file과 같습니다. utility은 PATH에 있지만 QProcess은이 환경 변수를 사용하지 않는 것으로 보입니다.PATH에서 명령을 실행 중입니까?

명령이 단순히 실패하고 유틸리티의 전체 경로를 지정해야합니다 (필자는이를 피하고 싶습니다).

이 문제가 발생합니까? 기본적으로 어떤 방법으로 QProcess PATH 변수를 사용합니까?

답변

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> 

그런 다음, 여전히 응용 프로그램 패키지에, 내용에/맥 OS이 새로운을 만들

응용 프로그램과 이름은 같지만 확장명은 .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 변수를 포함하여) 모든 환경이 제대로 설정됩니다 보장합니다.

관련 문제