私はQtを学び始めています。私はVisual Studioの世界から移動しています。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
サブディレクトリ用の。proファイルには、適切な[〜#〜] sources [〜#〜]、[〜#〜] headers [〜# 〜]および[〜#〜] resources [〜#〜]変数セット。
[〜#〜] target [〜#〜]、[〜#〜] template [〜#〜]およびその他の必要な値を教えてください。proファイル。
また、公式のチュートリアル以外に良いQMakeチュートリアルがありますか?
Troubadourのコメント に加えて、SUBDIRS
ターゲットはサブディレクトリの指定にのみ適していることに注意してください。したがって、あなたの余分な行
SOURCES += main.cpp
あなたのproject.proファイルは間違っており、最悪の場合main.cppファイルのビルドに失敗する可能性があります。せいぜい、qmakeは競合する仕様を持っているため、ファイルの解析を拒否します。
私はSUBDIRS
テンプレートを数回使用しましたが、ロジックとGUIが別々になっているように、多かれ少なかれ独立したライブラリにパーツを構築できればうまくいきます。これを行う1つの方法を次に示します。
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
logic/logic.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
build/build.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
ロジックとGUIフォルダーが実際にある種のターゲットを繰り返す場合は、subdirs
を使用します。ライブラリ。他のものとは独立して構築できます。その場合は、使用するだけです
TEMPLATE = lib
TARGET = logic
CONFIG += dll
logic.proで。
それらが独立したターゲットではなく、ソースファイルを整理するために存在する単なるフォルダである場合、代わりにそれぞれで.priファイルを使用し、次を使用して.pro内に含めることができます
include(logic/logic.pri)
include(gui/gui.pri)
.priファイル内のファイルパスは.proファイルと相対的であり、not .priであることを覚えておいてください。ところで、.priファイルの使用はオプションです。これらのフォルダー内のファイルを.proファイルに直接リストできるためです。 .priファイルは、そのビットをすっきりさせ、.proファイルを短くするのに役立ちます。