[해결] qt에서의 include 문제.
글쓴이: bus710 / 작성시간: 금, 2008/08/29 - 6:39오후
오늘은 qt를 보고 있었습니다.
교재는 서영진님의 '그 책' 입니다.
소스를 보면서 천천히 따라 해보고 있다가 문득 막힌 부분이 include하는 부분이었습니다.
책에서는 #include "QApplication" 이라고 되어 있습니다.
에러가 나기에 이리저리 바꿔 보다가 #include "qapplication.h"로 선언해 주었습니다.
대문자를 소문자로 바꾸어 주고, .h를 붙여주니 잘 찾습니다.
qt-4.3.3 입니다. 아마도 라이브러리들이 어떻게 이름 붙여져 있느냐에 따라 다른 것 같습니다.
제 추측은 이렇습니다. 호환성을 위해 QApplication 이라고 해놓고 링크를 통해 qapplication.h 를 찾는게 아닌가 하는 거죠..
혹시 이와 관련해 확실하게 알려 주실 분 안계신가요?????????
Forums:
fedora8
fedora8 입니다.
QtGui
Qt
OTL
..
제가 좀 더 정확한 정보를 드렸어야 했는데...!
다시금 확인해 보니 어쩐지 qt3 만 깔려 있는 것 같습니다.
왜 그렇게 생각했냐하면.... /usr/qt/에 3이라는 디렉토리만 있었고 그 아래에 있는 qbuttongroup.h에는 addButton 이 아닌 insert만이 있었기 때문입니다. 아마도 컴파일을 하기 위한 qt는 4.3.3이 깔려 있고, 라이브러리는 qt3만 있는게 아닌가 싶습니다.
음, 사용하는 배포판은 젠투입니다. 뭐가 문제인지 다시 확인하고 추가 글 올리겠습니다.
감사합니다.
akudoku.net rancid - let's go/side kick
life is only one time
링크가
링크가 아닙니다.
QApplication내부에서 qapplication.h를 include하도록 되어있습니다.
이것은 마치 C++이 표준이 확립되기 이전에는 iostream.h와 같은 해더파일이었다가, 새로운 표준에서 이전 해더파일과 혼동되지 않도록 .h를 때고 iostream만으로 파일명을 한것과 비슷합니다.
qapplication.h를 include하는 것은 Qt3의 방식이고, Qt4부터 QApplication을 include하도록 변경되었습니다.
아마 개발용 파일도 Qt4가 아니라 Qt3밖에 안깔려 있거나, qmake가 qt4가 아니라 qt3용 qmake를 이용하신게 아닐까 생각됩니다.
qmake를 돌려서 생성되는 Makefile에는, 자동으로 qmake에 기록되어있는 해더파일 경로가 포함되도록 되어있기 때문입니다.
...
저는 확실히 qmake를 쓰지 않고 매크로 떡칠한 자작 make를 사용하는 관계로 qmake 문제는 확실히 아닌 것 같습니다.
다만 말씀하신 관련 개발용 파일, 라이브러리가 qt3용만 깔려 있는게 거의 확실한 것 같습니다.
이제 제가 확인할 것은 젠투에서 qt4를 인스톨할 적에 왜 라이브러리는 qt3으로 깔았으며,
그렇다면 qt4용 라이브러리는 어떻게 깔것인가가 문제겠네요^^
감사합니다.
* 다시 확인해 보니 /usr/lib 에는 qt4가 있네요...
akudoku.net rancid - let's go/side kick
life is only one time
/usr/lib에있는건
/usr/lib에있는건 라이브러리 파일이므로 해더파일과는관련없습니다.
....
그렇군요. 왜 QTDIR은 qt3를 가리키고 있는 것인지 확인해야겠습니다. 지금 열심히 gentoo forum을 뒤지고 있습니다+_+
* http://www.mail-archive.com/gentoo-user@lists.gentoo.org/msg30113.html
위의 링크를 쫓아 보니, 슬롯 처리되어서 그렇다는 말이 나오는 군요.
위쪽에서 추천하는 대로 일단 진행해 보고 추가 댓글 올리겠습니다. 곧 잘 될 것 같네요^^
** /usr/include/qt4/ 에 관련 헤더 파일들이 들어 있네요. 대략 해결된 것 같습니다. 이제 QTDIR을 수정하는게 일이겠네요^^
*** gentoo에서는 /etc/env.d/50qtdir3 에서 QTDIR을 정의하고 있었습니다.
특별히 추가로 패키지를 깔진 않고 다만, 빌드를 다음과 같이 해주었습니다.
물론, gui 외에 다른 것들에 접근하게 된다면 makefile도 바꿔주어야 겠지만, 어쨋든 오늘은 맘편히 잘 수 있겠네요ㅎㅎ
akudoku.net rancid - let's go/side kick
life is only one time
댓글 달기