Qmake의 Subdirs 템플릿을 사용하는 방법은 무엇입니까?
-
07-07-2019 - |
문제
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 파일을 짧게 유지하는 데 도움이됩니다.