QT/X11 qmake DEFINES 변수에 공백문자가 포함된 값을 설정하기.
페이지 정보
작성자
본문
qmake DEFINES 변수에 공백문자가 포함된 값을 설정하려면 어떻게 해야 할까요?
_KORONE_NET=a b c
라는 매크로가 있다 합시다. qmake에서는 값들 사이에 공백문자가 포함되어 a b c는 한 덩어리가 아닌 _KORONE_NET=a와 b, c로 인식되게 됩니다.
qmake에 이 값들을 DEFINES += _KORONE_NET="a b c"라고 콰우팅하여 전달해 봅시다.
이번엔 명령행 부분에서 오류가 나네요.
이 문제는, a b c는 qmake에서 콰우팅된뒤 -D_KORONE_NET=a b c로 바뀌어 쉘에서 공백문자가 구분자로 해석되기 때문입니다.
다시, 쉘에서 해석될것 까지 고려해서 콰우팅을 해봅시다.
DEFINES += _KORONE_NET="'a b c'"
이제, 쉘에 전달되는 값은 -D_KORONE_NET='a b c'가 되어 문제가 없습니다.
그러나 이번에는 컴파일러에서 문제가 발생하게 됩니다.
역시 콰우팅이 문제입니다. 컴파일러에 전달된 갑은 #define _KORONE_NET a b c와 같은 형태로, 정상적인 형식이 아닙니다. 문제를 해결하기 위해, 다시 한번더 공백문자가 해석되지 않도록 콰우팅해줘야 합니다.
최종적으로 qmake에서 다음과 같이 정의하게 됩니다.
DEFINES += _KORONE_NET="'\"a b c\"'"
하지만, 만약 전달되어야 할 값에 콰우팅 문자가 포함되어 있다면 어떻게 해야 할까요?
그때는, 모든 문자를 \x00과 같은 16진수로 바꾸어 전달하면 됩니다.
_KORONE_NET=a b c
라는 매크로가 있다 합시다. qmake에서는 값들 사이에 공백문자가 포함되어 a b c는 한 덩어리가 아닌 _KORONE_NET=a와 b, c로 인식되게 됩니다.
qmake에 이 값들을 DEFINES += _KORONE_NET="a b c"라고 콰우팅하여 전달해 봅시다.
이번엔 명령행 부분에서 오류가 나네요.
이 문제는, a b c는 qmake에서 콰우팅된뒤 -D_KORONE_NET=a b c로 바뀌어 쉘에서 공백문자가 구분자로 해석되기 때문입니다.
다시, 쉘에서 해석될것 까지 고려해서 콰우팅을 해봅시다.
DEFINES += _KORONE_NET="'a b c'"
이제, 쉘에 전달되는 값은 -D_KORONE_NET='a b c'가 되어 문제가 없습니다.
그러나 이번에는 컴파일러에서 문제가 발생하게 됩니다.
역시 콰우팅이 문제입니다. 컴파일러에 전달된 갑은 #define _KORONE_NET a b c와 같은 형태로, 정상적인 형식이 아닙니다. 문제를 해결하기 위해, 다시 한번더 공백문자가 해석되지 않도록 콰우팅해줘야 합니다.
최종적으로 qmake에서 다음과 같이 정의하게 됩니다.
DEFINES += _KORONE_NET="'\"a b c\"'"
하지만, 만약 전달되어야 할 값에 콰우팅 문자가 포함되어 있다면 어떻게 해야 할까요?
그때는, 모든 문자를 \x00과 같은 16진수로 바꾸어 전달하면 됩니다.
추천0
댓글목록
구름님님의 댓글

아항~!