문제

QT를 배우기 시작했습니다. 저는 Visual Studio World에서 이사하고 있으며 QMake를 사용하여 프로젝트 구조를 구성하는 방법을 찾고 있습니다. 나는 'subdirs'템플릿을 찾았지만 그것을 이해하는 데 어려움을 겪고 있습니다.

내 프로젝트 구조는 다음과 같습니다.

project_dir/
    main.cpp
    project.pro
    logic/
      logic.pro
      some logic files
    gui/
      gui.pro
      gui files

나의 project.pro 이렇게 보인다

TEMPLATE = subdirs
SUBDIRS = logic \
          gui
SOURCES += main.cpp

에서 .찬성 내가 적절한 하위 디렉토리에 대한 파일 출처, 헤더 그리고 자원 변수 설정.

무엇을 말 해주세요 표적, 주형 그리고 내가 설정해야 할 다른 필요한 값 .찬성 파일.

또한 공식 튜토리얼 이외의 Qmake 자습서가 있습니까?

도움이 되었습니까?

해결책

에 추가 Troubadour의 의견, 나는 그 점에 주목할 것이다 SUBDIRS 대상은 하위 디렉터를 지정하는 데만 좋습니다. 따라서 추가 라인

SOURCES += main.cpp

Project.Pro 파일에서 잘못되었으며 최악의 경우 main.cpp 파일을 빌드하지 못할 수 있습니다. 기껏해야 Qmake는 파일이 상충되는 사양이 있기 때문에 파일을 구문 분석하지 않습니다.

나는 그것을 사용했다 SUBDIRS 템플릿을 몇 번 템플릿하면 논리와 GUI 별도와 마찬가지로 더 많은 독립 라이브러리로 부품을 만들 수 있다면 잘 작동합니다. 다음은 이것을 수행하는 한 가지 방법입니다.

project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cpp

project.pro :

TEMPLATE = subdirs
SUBDIRS = logic \
          gui

# build must be last:
CONFIG += ordered
SUBDIRS += build

common.pri :

#Includes common configuration for all subdirectory .pro files.
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

# The following keeps the generated files at least somewhat separate 
# from the source files.
UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs

논리/로직 .pro :

# Check if the config file exists
! include( ../common.pri ) {
    error( "Couldn't find the common.pri file!" )
}

HEADERS += logic.h
SOURCES += logic.cpp

# By default, TARGET is the same as the directory, so it will make 
# liblogic.a (in linux).  Uncomment to override.
# TARGET = target

GUI/GUI.PRO :

! include( ../common.pri ) {
    error( "Couldn't find the common.pri file!" )
}

FORMS += gui.ui
HEADERS += gui.h
SOURCES += gui.cpp

# By default, TARGET is the same as the directory, so it will make 
# libgui.a (in linux).  Uncomment to override.
# TARGET = target

빌드/빌드 .pro :

TEMPLATE = app

SOURCES += main.cpp

LIBS += -L../logic -L../gui -llogic -lgui

# Will build the final executable in the main project directory.
TARGET = ../project

다른 팁

너는 사용한다 subdirs 논리와 GUI 폴더가 실제로 어떤 종류의 대상을 상조하면 (예 : 다른 것과 독립적으로 건축 할 수있는 도서관. 이 경우 만 사용하십시오

TEMPLATE = lib
TARGET = logic
CONFIG += dll

logic.pro.

독립적 인 대상이 아니지만 소스 파일을 구성하기 위해 존재하는 폴더 만 있으면 대신 .pri 파일을 대신 사용하고 .pro를 사용하여 포함 할 수 있습니다.

include(logic/logic.pri)
include(gui/gui.pri)

.pri 파일의 파일 경로는 .pro 파일과 관련이 있으며 ~ 아니다 .pri. btw, .pri 파일을 사용하는 것은 폴더에 .pro 파일에 직접 파일을 나열 할 수 있으므로 선택 사항입니다. .pri 파일은 단지 비트 깔끔하게 만들고 .pro 파일을 짧게 유지하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top