[App 개발] [Xcode][Cocoa]App 실행 경로 얻어오기?
본문
맥 개발 초짜입니다.
Developer Documentation에 있는지 모르겠지만, 도저히 찾을 수가 없어 도움을 얻기 위해 질문 드립니다.
간단하게 Xcode에서 Cocoa App로 새 프로젝트를 생성하였습니다.
그리고 빌드된 실행 파일과 같은 위치에 txt 파일을 생성하려고 합니다.
Main()함수에 아래와 같이 넣었습니다.
FILE * stream = NULL ;
if( (stream = fopen ( "test.txt", "a+t" ))==NULL )
return ;
char string [ 255 ] ;
sprintf(string,"%s
", lpLogText );
int nlen = strlen ( string ) ;
fwrite( string , sizeof(char) ,nlen , stream ) ;
fclose( stream ) ;
여기서 좀 이해가 안되는 부분이 발생합니다.
fopen()함수 부분에 위와 같이 경로를 입력하였는데
1.Xcode에서 Run 또는 Debugging 할때는 실행파일과 같은 위치에 txt파일이 생성됩니다.
2.빌드 폴더에 가서 실행파일을 더블 클릭하여 실행하면 홈디렉토리에 txt파일이 생성됩니다.
1번과 같이 일괄적으로 생성시키고 싶은데
윈도우 함수 GetCurrentDirectory()나 GetModuleFileName()함수 같은 API를 이용하면 될꺼 같은데요.
Xcode에서 자기 자신의 경로를 얻는 함수를 알고 싶습니다.
고수님들의 답변 기다리겠습니다. 미리 감사드립니다.
최신글이 없습니다.
최신글이 없습니다.
댓글목록 6
龍佳利님의 댓글
standard c library를 쓰시는 거라면 getcwd(); 함수를 쓰시면 됩니다.
Cocoa를 쓰시는 거라면
NSString *sCurrent = [[NSFileManager defaultManager] currentDirectoryPath];
개인적으로는 후자를 권합니다. Standard C library의 file 함수들의 경우 디렉토리나 파일 이름에 특수 캐릭터가 들어간 경우 이상하게 동작하는 경우를 보았습니다.
hanulhosu님의 댓글
흠..답변 주신 내용으로 테스트 해보았습니다.
제가 질문을 잘못 올린 부분이 Cocoa로 프로젝트를 안 만들고 C++ Tool로 프로젝트를 생성하였더라구요.
그래서 getcwd()함수를 이용하였습니다.
결과는 위와 같이 나오네요.
디버깅시에는 getcwd에 빌드경로를 찾는데,
실행파일을 실행하면 home디렉토리를 가져옵니다. ㅠㅠ
龍佳利님의 댓글
제가 좀더 자세한 설명을 해 드리지 못했군요.
getcwd 라는 함수를 소개시켜 드린것이 윈도우하고 current dir 개념이 달라서 였습니다.
Finder에서 실행시키면 getcwd가 리턴하는 경로가 사용자의 home directory가 됩니다.
콘솔에서 커맨드 라인으로 실행시키면 실행 위치와 같은 경로를 리턴합니다.
이 이유 때문에 혼동을 가끔 합니다.
실행 파일이 위치한 곳을 찾는 조금 무식한 방법을 하나 소개하자면
int main( int iArg, char *asArg[]) {
로 메인을 정의하신 후에 asArg[0] 값을 찍어 보시면
실행파일의 full path를 알 수 있습니다.
이때, 실행 방법에 따라 상대 경로가 올수도 있고, 절대 경로가 올수 있습니다.
잘 파싱해서 사용하시면 됩니다.
龍佳利님의 댓글
Finder에서 실행시키면 getcwd가 리턴하는 경로가 사용자의 home directory가 됩니다.
-> 내용이 약간 부정확 해서 정정합니다.
Finder에서 실행시키면 getcwd가 리턴하는 경로는 사용자의 home directory입니다.
박근영님의 댓글
아주 유용한 정보 입니다. 감사합니다.
JParker님의 댓글
좋은 정보 감사드립니다.