4

QMakeを使用してプロジェクトの構造を整理する方法を探しています。テンプレートを見つけましたが、subdirs理解するのにかなり苦労しています。私はこのようなことをしようとしました。誰か私が正しいかどうか教えてください。

編集:次のスレッドを読みましたQMakeのサブディレクトリテンプレートの使用方法は?しかし、私はまだ立ち往生しています

私のプロジェクト構造は次のとおりです。

MultiFuncTester.pro

 - DMM
 (DMM.cpp, DMM.h and Multifunctester.pri)

 -Safety
 (Safety.cpp, Safety.h and Multifunctester.pri)

 -Solar

 (Solar.cpp, Solar.h and Multifunctester.pri)

Main

(Main.pro, Main.cpp and Multifunctester.pri)

ここで、Multifunctester.priファイルには、すべてのサブディレクトリに共通するものがあります。MultiFuncTester.proファイルと.priファイル、およびmain.proファイルを貼り付けています

プロジェクトのプロファイルをMultiFuncTester.proとして作成しました:

# build all components recursive

TEMPLATE = subdirs

######## normal build process ########
#
# Make sure your Main.pro is in the last line to ensure correct linking!
#
 SUBDIRS  = ../../MultiFuncTester/Components/Solar/Build/Solar.pro \
       ../../MultiFuncTester/Components/DMM/Build/DMM.pro \
        ../../MultiFuncTester/Components/Safety/Build/Safety.pro \
           ../../MultiFuncTester/Components/Setup/Build/Setup.pro \
           ../../MultiFuncTester/Components/Start/Build/Start.pro \
          ../../MultiFuncTester/Components/Main/Build/Main.pro \

 CONFIG += ordered

MultiFunctester.priファイル:

######################
# common stuff for all components
######################

TEMPLATE = lib

CONFIG += static \
      warn_on \
      qt \
      thread \
      rtti

   QT += core \
   gui

   INCLUDEPATH +=/..\
          ../../MultiFuncTester/Components \

   DEPENDPATH +=/..\
         ../../MultiFuncTester/Components \

   CONFIG += debug_and_release
   CONFIG += build_all

   QMAKE_CXXFLAGS += -Wall

   CONFIG(debug, debug|release) {
   CONFIG_SUFFIX = dbg
  } else {
  CONFIG_SUFFIX = rel
  DEFINES += QT_NO_DEBUG \
           QT_NO_DEBUG_OUTPUT \
                       DBT_TRACE_DISCARD \
           NDEBUG
 CONFIG(gcov) {
    QMAKE_CXXFLAGS_RELEASE += -fprofile-arcs -ftest-coverage
    QMAKE_LFLAGS_RELEASE += -fprofile-arcs
    QMAKE_CXXFLAGS_RELEASE -= -O2
    QMAKE_CXXFLAGS_RELEASE += -O0
}
}

CONFIG(crosstgt) {
 ### To be able to build Target run qmake as follows:
#qmake CONFIG+=crosstgt
CONFIG_SUFFIX = $${CONFIG_SUFFIX}_tgt
DEFINES += TARGET_BUILD
}

OBJECTS_DIR = obj_$${CONFIG_SUFFIX}
MOC_DIR = moc_$${CONFIG_SUFFIX}
DESTDIR = lib_$${CONFIG_SUFFIX}

Main.proファイル:

################# include pri file #################
!include("Main.pri") {
error("Main.pri not found")
}
 ####################################################

 ################# override some pri settings #################
TEMPLATE = app
TARGET = MultiFuncTester
CONFIG -= static
QT += core \
  gui
##############################################################


################# list used MultiFuncTester libraries #################
MultiFuncTester_COMPONENTS_DIR =../../MultiFuncTester/Components

################################################################


################# list MultiFunTester libraries #################
MultiFunTester_COMPONENTS_DIR =../../MultiFuncTester/Components
MultiFunTester_COMPONENTS = DMM \
                    SOLAR\
                    Safety\
                    Setup

   ################# own sources #################
   INCLUDEPATH += ../../MultiFuncTester/Components \

   SOURCES +=../Source/Main.cpp

   ################# set destination path
   DESTDIR = bin_$$CONFIG_SUFFIX

   ################# edit include path
    INCLUDEPATH += $$MultiFunctester_COMPONENTS_DIR \

   ################# start group
  LIBS += -Wl,--start-group \

   ################# include MultiFunctester libraries and set dependencies
    for(TheComponent, MultiFunctester_COMPONENTS) {
    THELIBPATH      = $$MultiFunctester_DIR/$${TheComponent}/Build/lib_$$CONFIG_SUFFIX
    PRE_TARGETDEPS  += $$THELIBPATH/lib$${TheComponent}.a
    LIBS            += $$THELIBPATH/lib$${TheComponent}.a
    }


   ################# end group
    LIBS += -Wl,--end-group

各サブディレクトリには、ヘッダーとソースが定義された.proファイルと、共通のmultifunctester.priファイルがあります。

共通の静的ライブラリ(MultiFunctester.priファイル)を配置することが正しいアプローチであり、コードで何を実行するかを教えてください。そうでない場合は、間違っている場合は修正するのを手伝ってください。

ありがとう

4

1 に答える 1