2011-02-04 4 views
1

저는 QT에서 newby이며 일하기 시작하는 예도 얻을 수 없습니다. 문제는 심지어 QtCore도 발견되지 않는다는 것입니다. 내 경로에 문제가 있다고 생각하거나 올바른 버전이 사용되지 않았습니까? 오류의Qt를 시작하는 데 도움이

#include <QtCore> 
#include <iostream> 
#include <QtXml/QXmlSimpleReader> 

int main(int argc, char *argv[]) 
{ 
QDir xmldir("/xxx/xxx"); 
QXmlSimpleReader xmlReader; 
} 

예입니다 : /Users/frank/xxx-build-desktop/../xxx/main.cpp:1 : 오류 : QtCore : 그런 파일이나 디렉토리.

QMake version 2.01a 
Using Qt version 4.7.0 in /Library/Frameworks 

내가 맥 10.6.6 를 사용하고 모든 응답이 이해 될 것이다 :

내가 실행하는 경우는/usr/빈/qmake를 qmake를 -v이 인쇄되어있는 경로와 qmake를 할 수있는 경로를 검사 . 메이크업에서

QT  += core gui 
QT  += xml 
QT  += webkit 
QT  += xmlpatterns 

TARGET = xxx 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 


SOURCES += main.cpp 

결과 :

iMac:~/xxx/ qmake -spec macx-g++ 
iMac:~/xxx/ ls -ltr 
total 56 
-rw-rw---- 1 frank staff 349 Feb 5 16:06 xxx.pro 
-rw-rw---- 1 frank staff 3875 Feb 6 12:56 main.cpp 
-rw-rw---- 1 frank staff 7985 Feb 6 12:56 xxx.pro.user 
-rw-rw---- 1 frank staff 8974 Feb 6 12:56 Makefile 
iMac:~/xxx/ make 
g++ -c -pipe -g -gdwarf-2 -Wall -W -DQT_WEBKIT_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.7/mkspecs/macx-g++ -I. -I. -I/usr/include/QtCore -I. -I/usr/include/QtGui -I. -I/usr/include/QtXml -I. -I/usr/include/QtXmlPatterns -I. -I/usr/include/QtWebKit -I/usr/include -I. -F/Library/Frameworks -o main.o main.cpp 
main.cpp:1:18: error: QtCore: No such file or directory 
main.cpp: In function ‘int main(int, char**)’: 
main.cpp:27: error: ‘QDir’ was not declared in this scope 
main.cpp:27: error: expected `;' before ‘xmldir’ 
main.cpp:28: error: ‘xmldir’ was not declared in this scope 
main.cpp:28: error: ‘QDir’ is not a class or namespace 
main.cpp:28: error: ‘QDir’ is not a class or namespace 
main.cpp:28: error: ‘QDir’ is not a class or namespace 
main.cpp: At global scope: 
main.cpp:25: warning: unused parameter ‘argc’ 
main.cpp:25: warning: unused parameter ‘argv’ 
main.cpp:63: warning: unused parameter ‘namespaceURI’ 
main.cpp:63: warning: unused parameter ‘localName’ 
main.cpp:63: warning: unused parameter ‘qName’ 
main.cpp:67: warning: unused parameter ‘namespaceURI’ 
main.cpp:67: warning: unused parameter ‘localName’ 
make: *** [main.o] Error 1 
iMac:~/xxx/ 
+0

make를 실행하면 실행중인 명령을 인쇄해야합니다 (Mac에서는이 명령이 실행되는지 확실하지 않음). 컴파일을위한 명령은 무엇입니까? Qt include 디렉토리에 대한 올바른 경로가 포함되어 있습니까? –

+0

"/ usr/bin/qmake"를 언급하고 있는데, PATH로 지정되어 있습니다. – user3111525

+0

@frankmoss, qmake (Qt Creator와 같은 IDE를 사용하지 않는 경우 일반적인 컴파일 절차)를 실행하면 어떻게 될지 묻습니다. 그러나 Mac에 make와 같은 것이 있는지조차 확신하지 못합니다. 대신 XCode라고하는 무언가가 있습니다. 그래서 내가 사용 된 빌드 시스템의 세부 사항을 알지 못하기 때문에 여기서 도움을 줄 수는 없습니다. –

답변

2

#include의 헤더 파일을 여기에

프로젝트 파일입니다. QtCore는 헤더가 아니며 헤더가 포함 된 디렉토리입니다.

당신이 QDir을 사용하고 있기 때문에,이에 첫 번째 줄을 변경 :

당신이 쓰는 대부분의 C++ Qt는 응용 프로그램의
#include <QtCore/QDir> 
+1

먼저 qmake가 include 디렉토리 목록에/path/to/QtCore를 추가함에 따라'#include '이됩니다. 둘째, QtCore 디렉토리에 QtCore include 파일이 있습니다. QtCore 헤더를 모두 포함하고 있습니다. 실제로 사용하지 않는 것이 좋습니다.하지만 여전히 #include 이 작동해야합니다. –

+0

정확히 세르게이 사건입니다. 왜 자동으로 그것을 포함하지 않는가? 프로젝트 파일로 질문을 편집했습니다. 포괄적 인 답변에 대해 감사합니다. – user3111525

3

, 그것은 손으로 응용 프로그램을 컴파일하는 방법을 즉시 분명 아니다. 이것은 요인에 의해 복잡 :

  1. 헤더 파일

    가 자신의 버전
  2. moc, 메타 오브젝트 컴파일러에 따라 다른 디렉토리에 배치 될 수있다,
  3. 의 올바른 버전을 실행해야 DLL을 전 처리기의 수는 장소 위의 모든 감안할 때

에있을 필요가 정의합니다

  • 을 포함 할 필요가같은 빌드 시스템을 사용하는 가장 쉬운 방법은 Qt가 기본이며, cmake이거나 Qt를 인식하는 다른 빌드 시스템입니다.

    Qt를 처음 사용하는 사람들에게 나는 qmake을 권장합니다.

    다음은 기본적인 명령 줄 사용법입니다. qmake를 비주얼 스튜디오와 엑스 코드를 모두 통합을 제공하지만, 나는 여기에 해결되지 않습니다

    1. 당신이 qmake를위한 프로젝트 파일을 빌드
    2. 필요 믿고 어떤 파일을 프로젝트에
    3. 쓰기 디렉토리를 작성 다음과 같이 을 프로젝트에서 실행하십시오. qmake -project "CONFIG+=xml". Mac을 사용하고 있으므로 -macx 옵션을 원할 수도 있지만 직접 사용한 적이 없습니다. 적어도 과거에는 qmake가 XML 종속성을 선택하기에 충분히 똑똑하지 않아 "CONFIG + = xml"옵션이이를 명시 적으로 추가합니다.
    4. 가 qmake를 다시 실행하여 프로젝트 파일에서 메이크 파일을 만듭니다 qmake
    5. 을 이제 메이크 파일을 가지고, 구축 사용하여 응용 프로그램을 make, nmake, gmake, 또는 시스템 있도록 해당하는 버전.

    qmake가 모든 것을 올바르게 선택했다면 이제 make를 사용하여 응용 프로그램을 빌드 할 수 있습니다.

    새 파일을 프로젝트에 추가 할 때 옵션없이 프로젝트 파일 (*.pro)에 추가 한 다음 qmake에 다시 추가해야합니다.

  • +0

    하지만 내 컴퓨터가 아닌 내 컴퓨터에서 작동하는 이유는 무엇입니까? 우리에게는 같은 종류의 설정이 있습니다. 나는 Qt SDK를 사용하고있다. 심지어 상자 밖에서 작업해야하는 예제 프로젝트를 열 때도 똑같은 일이 발생합니다. – user3111525

    +0

    추가 출력을 제공하거나 몇 가지 사항을 확인해야합니다. QtCore 디렉토리 및 포함 파일이 있습니까? 액세스 권한이 있습니까? 전체 컴파일 명령 및 실패 메시지는 무엇입니까? –

    +0

    글쎄, QtCreator가 경로를 고칩니다. QtCreator의 "Build All"버튼을 사용하고 있습니다. 그리고 Path가 판단하는 qmake를 사용한다고 생각합니다. – user3111525

    0

    Qt를 처음 사용하고 특별한 빌드 요구 사항 (PPC, 10.4 등)이없는 경우 미리 패키지 된 Qt SDK을 다운로드하는 것이 좋습니다. 그리고 포함 된 IDE 인 Qt Creator을 사용하여 시작하십시오. 그렇게하면 발이 빨리 그리고 덜 고통스럽게 젖을 것입니다.

    +0

    QtCreator를 사용했습니다. – user3111525

    0

    사용자가 제공 한 변수 설정이 실제로는 QMake 파일 xxx.pro에 있어야합니다. 그런 다음 을 실행하여 Makefilexxx.pro에서 생성 한 다음 make을 실행할 수 있습니다. QMake는 Qt와 설치에 대한 지식과 함께 QTSOURCES과 같은 변수를 사용하여 올바른 makefile을 생성합니다.

    +0

    당신이 말하는 출력은 xxx.pro입니다. – user3111525

    1

    /usr/include/* 지시어가 존재하지 않는 것이 이상합니다. Qt 설치에 문제가있는 것으로 보입니다. 맥의 특성을 이해하지 못한다. 그러나 내가 알아 낸 바에 따르면, -F/Library/Frameworks 매개 변수가 G ++로 패스하면 #include <QtCore> 대신 #include <QtCore/QtCore>을 사용할 수 있어야한다. 다른 플랫폼의 올바른 Qt 설치 (Windows, Linux)에서는 두 형식 모두 똑같이 사용할 수 있습니다. 그러나 G ++가 #include <QtXml/QXmlSimpleReader> 라인에 대해 불평하지 않는다는 판단에 따라 #include <QtModule/ModuleHeader> 양식이 제대로 작동하므로 다른 문제가없는 경우 해결 방법으로 사용할 수 있습니다.

    QtCore를 어떤 형식 으로든 포함시키지 않는 것이 좋습니다. 그것은 대부분 당신에게 쓸모없는 것들을 많이 포함하고 컴파일 시간과 이름 충돌의 확률을 증가시킬뿐입니다. 대신 사용하려고하는 것만 포함하십시오 (예 : #include <QDir> 또는 #include <QtCore/QDir>).

    0

    /usr/include /에 QtCore가 없으면 설치 문제입니다. 4.7.0에서 사람들이 같은 문제를 겪고 있다는 것을 알았 기 때문에 4.7.0에서 맥에 대한 패키징 문제가 있다고 생각합니다.

    4.7.1을 가져 오거나 소스에서 직접 빌드하십시오.

    관련 문제