C++ QtCreator:如何为自定义小部件生成库和测试可执行文件
有以下文件:C++ QtCreator:如何为自定义小部件生成库和测试可执行文件,c++,qt,unit-testing,dll,qt-creator,C++,Qt,Unit Testing,Dll,Qt Creator,有以下文件: MyWidget |- MyWidget.cpp |- MyWidget.hpp |- MyWidget_UnitTest.cpp 我想立即生成以下文件: MyWidget |- MyWidget.cpp |- MyWidget.hpp |- MyWidget_UnitTest.cpp MyWidget.dll(或非windows操作系统的等效文件) MyWidget_UnitTest.exe(或非windows操作系统的等效程序) 因此,很
MyWidget
|- MyWidget.cpp
|- MyWidget.hpp
|- MyWidget_UnitTest.cpp
我想立即生成以下文件:
MyWidget
|- MyWidget.cpp
|- MyWidget.hpp
|- MyWidget_UnitTest.cpp
# 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
我无法将两者合并到一个项目中
可能会添加更多结果:静态与动态库等。使用不同的
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
使用子曲面项目组织
project_dir/
src/
your_dll/
... sources, headers ...
your_dll.pro
your_exe/
... sources, headers ...
your_exe.pro
project_dir.pro
项目总监专业版
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += src/your_dll
SUBDIRS += src/your_exe
your_exe.depends = your_dll
TARGET = your_exe
TEMPLATE = app
QT += widgets
LIBS += -L$${YOUR_DLL_PATH} -lyour_dll
etc...
TARGET = your_dll
TEMPLATE = lib
QT += widgets
etc...
你的_exe.pro
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += src/your_dll
SUBDIRS += src/your_exe
your_exe.depends = your_dll
TARGET = your_exe
TEMPLATE = app
QT += widgets
LIBS += -L$${YOUR_DLL_PATH} -lyour_dll
etc...
TARGET = your_dll
TEMPLATE = lib
QT += widgets
etc...
你的_dll.pro
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += src/your_dll
SUBDIRS += src/your_exe
your_exe.depends = your_dll
TARGET = your_exe
TEMPLATE = app
QT += widgets
LIBS += -L$${YOUR_DLL_PATH} -lyour_dll
etc...
TARGET = your_dll
TEMPLATE = lib
QT += widgets
etc...
现在,当您构建时,将构建DLL和EXE,EXE将链接到DLL。这正是内部库的用途-请参阅。它是一个创建库的子项目,并且是主项目(exe)的依赖项。据我所知,本文档解释了如何包含库,而不是如何生成库。要同时构建库,请调用
qmake
两次以获取两者。