質問

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ファイルに対して相対的であり、.priではなく ことに注意してください。ところで、.priファイルの使用はオプションです。これらのフォルダー内のファイルを.proファイルに直接リストできるためです。 .priファイルは、それを少しすっきりさせ、.proファイルを短くするのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top