簡體   English   中英

QT Creator:如何為自定義窗口小部件生成庫和測試可執行文件

[英]QT Creator: How to generate the library and testing executable for a custom widget

有以下文件:

MyWidget
   |- MyWidget.cpp
   |- MyWidget.hpp
   |- MyWidget_UnitTest.cpp

我想立即生成以下文件:

  1. MyWidget.dll(或等效於非Windows OS)
  2. MyWidget_UnitTest.exe(或等效於非Windows OS)

因此,很容易測試小部件的錯誤,也可以將結果包含在其他小部件或項目中。

我試圖操縱.pro文件,但沒有成功:

# ONLY TESTING UNIT
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyWidget_UnitTest
TEMPLATE = app
SOURCES +=\
    MyWidget.cpp \
    MyWidget_UnitTest.cpp
HEADERS  += \
    MyWidget.hpp
CONFIG += c++11 -Wall

#ONLY LIB
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyWidget_UnitTest
TEMPLATE = lib
SOURCES +=\
    MyWidget.cpp \
    MyWidget_UnitTest.cpp
HEADERS  += \
    MyWidget.hpp
CONFIG += c++11 -Wall
CONFIG += dll

我無法將兩者合並到一個項目中。

可能會添加更多結果:靜態vs動態lib等。

使用不同的CONFIG標志:

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
SOURCES +=MyWidget.cpp
HEADERS += MyWidget.hpp
CONFIG += c++11 -Wall

testmode {
    # ONLY TESTING UNIT
    TARGET = MyWidget_UnitTest
    SOURCES += MyWidget_UnitTest.cpp
    TEMPLATE = app
}

libmode {
    #ONLY LIB
    TARGET = MyWidget
    TEMPLATE = lib
    CONFIG += dll
}

要構建兩者:

qmake "CONFIG+=libmode"
make
qmake "CONFIG+=testmode"
make

使用SUBDIRS項目組織。

project_dir/
  src/
    your_dll/
      ... sources, headers ...
      your_dll.pro
    your_exe/
      ... sources, headers ...
      your_exe.pro
  project_dir.pro

project_dir.pro

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS += src/your_dll
SUBDIRS += src/your_exe

your_exe.depends = your_dll

your_exe.pro

TARGET = your_exe
TEMPLATE = app
QT += widgets
LIBS += -L$${YOUR_DLL_PATH} -lyour_dll

etc...

your_dll.pro

TARGET = your_dll
TEMPLATE = lib
QT += widgets

etc...

現在,在構建時,將構建DLL和EXE,並且EXE將鏈接到DLL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM