mirror of
https://gitee.com/drabel/LibQQt.git
synced 2025-01-04 10:18:44 +08:00
update multi link technology pri group
This commit is contained in:
parent
455b2d0917
commit
060d1f6b4a
467
lib/lib_header.pri
Normal file
467
lib/lib_header.pri
Normal file
@ -0,0 +1,467 @@
|
||||
#---------------------------------------------------------------
|
||||
#qqt_header.pri
|
||||
#Project link: https://gitee.com/drabel/LibQQt
|
||||
#if you succeed with LibQQt, please thumb up.
|
||||
#2017年11月10日18:53:56
|
||||
##Don't modify this file outside QQt project
|
||||
##this is QQt feature pri you can modify QQt feature at this pri in QQt project
|
||||
#---------------------------------------------------------------
|
||||
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QKIT
|
||||
#################################################################
|
||||
|
||||
##Qt version
|
||||
QT += core sql network gui xml
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
# release open debug output
|
||||
CONFIG(debug, debug|release) {
|
||||
} else {
|
||||
DEFINES -= QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
#compatible old version QQt (deperated)
|
||||
greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
|
||||
|
||||
#defined in qqtcore.h
|
||||
#lessThan(QT_MAJOR_VERSION, 5):DEFINES += nullptr=0
|
||||
|
||||
#mingw要加速编译,make -j20,-j参数是最好的解决办法。
|
||||
|
||||
#close win32 no using fopen_s warning
|
||||
win32:DEFINES += _CRT_SECURE_NO_WARNINGS #fopen fopen_s
|
||||
|
||||
#msvc支持设置
|
||||
msvc {
|
||||
MSVC_CCFLAGS =
|
||||
#this three pragma cause mingw errors
|
||||
msvc:MSVC_CCFLAGS += /wd"4819" /wd"4244" /wd"4100"
|
||||
|
||||
#UTF8编码
|
||||
DEFINES += __MSVC_UTF8_SUPPORT__
|
||||
msvc:MSVC_CCFLAGS += /execution-charset:utf-8
|
||||
msvc:MSVC_CCFLAGS += /source-charset:utf-8
|
||||
#msvc:MSVC_CCFLAGS += /utf-8 #这一个是快捷方式,顶上边两个。
|
||||
|
||||
#指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp
|
||||
msvc:MSVC_CCFLAGS += /MP
|
||||
#指出:这个FLAG只能用于MSVC
|
||||
|
||||
msvc:QMAKE_CFLAGS += $${MSVC_CCFLAGS}
|
||||
msvc:QMAKE_CXXFLAGS += $${MSVC_CCFLAGS}
|
||||
|
||||
#指定stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h 然后在 stable.h里 包含你所用到的所有 Qt 头文件
|
||||
#在.pro 文件中加入一行, 加在这里,加速编译。
|
||||
#msvc:PRECOMPILED_HEADER = $${PWD}/qqt-qt.h
|
||||
#指出:precompiler header只能用于MSVC
|
||||
#这个功能可用,可是编译问题比较多,不方便,所以默认不开开。
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##build qqt or link qqt
|
||||
#################################################################
|
||||
##different target:
|
||||
##-----------------------------------------------
|
||||
##win platform:
|
||||
##build qqt dll + QQT_LIBRARY
|
||||
##build qqt lib + QQT_STATIC_LIBRARY
|
||||
##link qqt lib + QQT_STATIC_LIBRARY
|
||||
##link qqt dll + ~~
|
||||
##- - - - - - - - - - - - - - - - - - - - -
|
||||
##*nix platform:
|
||||
##build and link qqt dll or lib + ~~
|
||||
##-----------------------------------------------
|
||||
#link QQt static library in some occation on windows
|
||||
#when link QQt static library, if no this macro, headers can't be linked on windows.
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64 || iOS|iOSSimulator) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw|ios{
|
||||
#on my computer, Qt library are all static library?
|
||||
DEFINES += QQT_STATIC_LIBRARY
|
||||
message(Build $${TARGET} QQT_STATIC_LIBRARY is defined. build and link)
|
||||
}
|
||||
|
||||
#link and build all need this macro
|
||||
contains(DEFINES, QQT_STATIC_LIBRARY) {
|
||||
DEFINES += QCUSTOMPLOT_STATIC_LIBRARY
|
||||
DEFINES += QZXING_STATIC_LIBRARY
|
||||
DEFINES += QT_QTSOAP_STATIC_LIBRARY
|
||||
DEFINES += BUILD_QDEVICEWATCHER_STATIC
|
||||
DEFINES += QT_QTMMLWIDGET_STATIC_LIBRARY
|
||||
DEFINES += QT_GUMBO_STATIC_LIBRARY
|
||||
}
|
||||
}
|
||||
|
||||
################################################################
|
||||
##build cache (此处为中间目标目录,对用户并不重要)
|
||||
##此处加以干涉,使目录清晰。
|
||||
##此处关于DESTDIR的设置,导致用户必须把这个文件的包含,提前到最前边的位置,才能进行App里的目录操作。
|
||||
##删除干涉?
|
||||
##用户注意:(done in app_base_manager), 首先include(app_link_qqt_library.pri),然后做app的工作,和include其他pri,包括LibQQt提供的其他pri,保证这个顺序就不会出错了。
|
||||
##对编译目标目录进行干涉管理,显得更加细腻。
|
||||
##用户注意:这里相当于给编译中间目录加了一个自动校准,属于校正范畴。
|
||||
################################################################
|
||||
isEmpty(OBJECTS_DIR):OBJECTS_DIR = obj
|
||||
isEmpty(MOC_DIR):MOC_DIR = obj/moc.cpp
|
||||
isEmpty(UI_DIR):UI_DIR = obj/ui.h
|
||||
isEmpty(RCC_DIR):RCC_DIR = qrc
|
||||
#这样做保持了App工程和LibQQt工程中间目录的一致性,但是并不必要。
|
||||
isEmpty(DESTDIR):DESTDIR = bin
|
||||
|
||||
################################################################
|
||||
##QQt Functions Macro
|
||||
################################################################
|
||||
#You need switch these more macro according to your needs when you build this library
|
||||
#You can tailor QQt with these macro.
|
||||
#Default: macroes is configed, some open, some close, compatibled to special accotation.
|
||||
##App希望裁剪LibQQt,开关这个文件里的组件宏,用户有必要读懂这个头文件。up to so.
|
||||
|
||||
##################C++11 Module###############################
|
||||
#if you use C++11, open this annotation. suggest: ignore
|
||||
#DEFINES += __CPP11__
|
||||
contains (DEFINES, __CPP11__) {
|
||||
#macOS gcc Qt4.8.7
|
||||
#qobject.h fatal error: 'initializer_list' file not found,
|
||||
#Qt4.8.7 can't support c++11 features
|
||||
#QMAKE_CXXFLAGS += "-std=c++11"
|
||||
#QMAKE_CXXFLAGS += "-std=c++0x"
|
||||
|
||||
#below: gcc version > 4.6.3
|
||||
#Open this Config, Why in Qt4 works? see qmake config auto ignored this feature.
|
||||
#In Qt5? don't need open this config, qmake auto add c++11 support on linux plat.
|
||||
#on windows mingw32? need test
|
||||
#CONFIG += c++11
|
||||
|
||||
#compile period
|
||||
#LibQQt need c++11 support. Please ensure your compiler version.
|
||||
#LibQQt used override identifier
|
||||
#lambda also need c++11
|
||||
}
|
||||
|
||||
##################MultiMedia Module###############################
|
||||
DEFINES += __MULTIMEDIA__
|
||||
#on mac qt4 has no multimedia
|
||||
contains(QKIT_PRIVATE, macOS) {
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__MULTIMEDIA__
|
||||
}
|
||||
contains (DEFINES, __MULTIMEDIA__) {
|
||||
QT += multimedia
|
||||
}
|
||||
|
||||
##################PluginSupport Module###############################
|
||||
#used in windows linux e-linux android, mac ios not support exactly
|
||||
#plugin notifer, and plugin device managament.
|
||||
#if you use DeviceWatcher , open this annotation
|
||||
DEFINES += __PLUGINSUPPORT__
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator||macOS) {
|
||||
DEFINES -= __PLUGINSUPPORT__
|
||||
}
|
||||
|
||||
##################PrintSupport Module###############################
|
||||
#if you use printsupport , open this annotation
|
||||
DEFINES += __PRINTSUPPORT__
|
||||
#Qt 5.9.1, ios and android can't support this feature, because Qt 5.9.1, broken
|
||||
equals(QT_VERSION, 5.9.1) {
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator||ANDROID||ANDROIDX86) {
|
||||
DEFINES -= __PRINTSUPPORT__
|
||||
}
|
||||
}
|
||||
#Qt 5.9.2, android support this feature
|
||||
#Qt 5.9.2, ios can't use printsupport
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator) {
|
||||
DEFINES -= __PRINTSUPPORT__
|
||||
}
|
||||
contains (DEFINES, __PRINTSUPPORT__) {
|
||||
#qtHaveModule(printsupport) : message(qqt use module printsupport)
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += printsupport
|
||||
}
|
||||
|
||||
##################Charts Module###############################
|
||||
#if you use QQtCharts, open this annotation
|
||||
DEFINES += __QQTCHARTS__
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__QQTCHARTS__
|
||||
contains(QKIT_PRIVATE, ARM32||MIPS32||EMBEDDED):DEFINES-=__QQTCHARTS__
|
||||
#based on QtCharts, need charts module
|
||||
contains(DEFINES, __QQTCHARTS__) {
|
||||
QT += charts
|
||||
|
||||
#if you use qcustomplot, open this annotation
|
||||
#qcustomplot use QPrinter to export pdf file, QChart haven't use it, I fix it, now compiler ok.
|
||||
#in ios qcustomplot can't call savePdf now, no result but a log no printer error.
|
||||
DEFINES += __CUSTOMPLOT__
|
||||
}
|
||||
|
||||
##################QQtLogSystem Module###############################
|
||||
DEFINES += __QQTLOGSYSTEMSUPPORT__
|
||||
|
||||
###########################################################################
|
||||
###QQtSocketClient多组功能组件。
|
||||
############
|
||||
##################QQt Network Module##################################
|
||||
#包括SerialPort Bluetooth TcpUdp
|
||||
#包括HttpFtp 多路的HttpFtp,QQtAccessManager WebService WebSocket Gumbo
|
||||
#包括WebKit WebEngine
|
||||
DEFINES += __NETWORKSUPPORT__
|
||||
contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
##################SerialPort Module##################################
|
||||
#if you use qextserialport, open the annotation
|
||||
#suggest: Qt5 use factory-packed, Qt4 use forming Qt5, extra use this.
|
||||
#DEFINES += __QEXTSERIALPORT__
|
||||
#if compiler QtSerialPort module manual, note this line is a good idea. default: qt4 qextserialport
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES += __QEXTSERIALPORT__
|
||||
#to ios, use qextserialport
|
||||
#android qt5 support serialport default?
|
||||
contains (DEFINES, __IOS__): DEFINES += __QEXTSERIALPORT__
|
||||
contains (DEFINES, __QEXTSERIALPORT__) {
|
||||
CONFIG += thread
|
||||
unix:DEFINES += _TTY_POSIX_
|
||||
win32:DEFINES += _TTY_WIN_
|
||||
#Qt4 is not a very good Cross Qt version, Qt5 suggest.
|
||||
win32:LIBS += -lsetupapi -ladvapi32
|
||||
#message ( __QEXTSERIALPORT__ Defined in $${TARGET})
|
||||
} else {
|
||||
#message ( __QSERIALPORT__ Defined in $${TARGET})
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += serialport
|
||||
lessThan(QT_MAJOR_VERSION, 5): CONFIG += serialport
|
||||
unix {
|
||||
DEFINES += _TTY_POSIX_
|
||||
} else {
|
||||
DEFINES += _TTY_WIN_
|
||||
}
|
||||
}
|
||||
|
||||
##################Bluetooth Module###############################
|
||||
#if you use qtbluetooth, open this annotation
|
||||
DEFINES += __BLUETOOTH__
|
||||
#if you compiler QtBluetooth module manual, note this line is a good idea. default qt4 doesn't use bluetooth
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES -= __BLUETOOTH__
|
||||
#condation
|
||||
contains (DEFINES, __BLUETOOTH__) {
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += bluetooth
|
||||
lessThan(QT_MAJOR_VERSION, 5): CONFIG += bluetooth
|
||||
}
|
||||
|
||||
##################RawSocket Module###############################
|
||||
#raw socket, 这个是常用的,不要关,dont close。...
|
||||
DEFINES += __TCPUDPSOCKET__
|
||||
|
||||
##################WebService Module###############################
|
||||
#if you use Qt Service Support ( QtSoap ), open this annotation
|
||||
DEFINES += __WEBSERVICESUPPORT__
|
||||
|
||||
#One Ftp Http 单工...
|
||||
#Multi 半双工(客户端并发,服务器序列) QNetworkAccessManager
|
||||
#QNetworkAccessManager 提供多路并发 HTTP session。
|
||||
#if you use QNetworkAccessManagerSupport , open this annotation
|
||||
DEFINES += __WEBACCESSSUPPORT__
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES -= __WEBACCESSSUPPORT__
|
||||
contains(QKIT_PRIVATE, ARM32||MIPS32||EMBEDDED):DEFINES -= __WEBACCESSSUPPORT__
|
||||
contains (DEFINES, __WEBACCESSSUPPORT__) {
|
||||
#QSslError not found, you need recompiler Qt4
|
||||
}
|
||||
|
||||
DEFINES += __WEBKITSUPPORT__
|
||||
contains (DEFINES, __WEBKITSUPPORT__) {
|
||||
#TODO: QT += webkit
|
||||
}
|
||||
|
||||
DEFINES += __WEBENGINESUPPORT__
|
||||
contains (DEFINES, __WEBENGINESUPPORT__) {
|
||||
}
|
||||
|
||||
##################WebSocket Module###############################
|
||||
#Multi New Protocol 全双工 QWebSocket
|
||||
#if you use QWebSocketSupport , open this annotation
|
||||
DEFINES += __WEBSOCKETSUPPORT__
|
||||
#equals(QKIT_PRIVATE, macOS):DEFINES += __WEBSOCKETSUPPORT__
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES -= __WEBSOCKETSUPPORT__
|
||||
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
||||
QT += websockets
|
||||
#Qt4 QSslError not found, you need recompiler Qt4
|
||||
#TODO: QT += webkit
|
||||
}
|
||||
|
||||
#c++ html parser query
|
||||
#if you use Gumbo parser query, open this annotation
|
||||
#这个组件用于解析网页,获得网页数据。
|
||||
#gumbo属于网络模块,中高级工具,经常用于写爬虫。
|
||||
DEFINES += __GUMBOSUPPORT__
|
||||
contains (DEFINES, __GUMBOSUPPORT__) {
|
||||
#Gumbo need std support, c99...
|
||||
QMAKE_CFLAGS += -std=c99
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
##################Exquisite Widgets Module###############################
|
||||
#if you use Exquisite widgets, open this annotation
|
||||
#精美模块,包含不少的精美组件,这个模块可以集中开关。
|
||||
#依赖基础控件
|
||||
DEFINES += __EXQUISITE__
|
||||
contains (DEFINES, __EXQUISITE__) {
|
||||
#if you use QR encode, open this annotation
|
||||
DEFINES += __QRENCODE__
|
||||
|
||||
#if you use QR decode, open this annotation
|
||||
#QZXing isnan_z function error. fixed
|
||||
#QZxing delegating constructors used. need c++11,but qt4.8.7 dont support c++11,compiler gcc 5.4.0 20160609 support....
|
||||
#DEFINES += __QRDECODE__
|
||||
contains(DEFINES, __QRDECODE__) {
|
||||
#lessThan(QT_MAJOR_VERSION, 5): QT += declarative
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += quick
|
||||
}
|
||||
|
||||
#if you use gif widgets, open this annotation
|
||||
DEFINES += __GIFWIDGETS__
|
||||
|
||||
#if you use Svg widgets, open this annotation
|
||||
DEFINES += __SVGWIDGETS__
|
||||
contains(QKIT_PRIVATE, macOS) {
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__SVGWIDGETS__
|
||||
}
|
||||
contains (DEFINES, __SVGWIDGETS__) {
|
||||
QT += svg
|
||||
}
|
||||
|
||||
##################Mathes Module###############################
|
||||
DEFINES += __MATHWIDGETSUPPORT__
|
||||
|
||||
#LOGIC CAMERA PREVIEW
|
||||
#depend on dmmu
|
||||
DEFINES += __LOGICCAMERAMODULE__
|
||||
|
||||
#opengl module
|
||||
DEFINES += __OPENGLWIDGETS__
|
||||
contains(QKIT_PRIVATE, MIPS32||ARM32||EMBEDDED):DEFINES-=__OPENGLWIDGETS__
|
||||
contains (DEFINES, __OPENGLWIDGETS__) {
|
||||
QT += opengl
|
||||
}
|
||||
|
||||
#single color only widget
|
||||
DEFINES += __COLORWIDGETS__
|
||||
|
||||
#click widgets
|
||||
DEFINES += __CLICKWIDGETS__
|
||||
|
||||
#click sound widgets
|
||||
DEFINES += __CLICKSOUNDWIDGETS__
|
||||
}
|
||||
|
||||
########################################################################
|
||||
###这个模块名为高级模块。
|
||||
###如果初中级工程师能使用这个模块完成App,那么必定是高分实现力学员。
|
||||
###建议中级以上工程师尝试。2018年4月22日 星期天 11点08分
|
||||
############
|
||||
##################HighGrade Module###############################
|
||||
#if you use HighGrade module, open this annotation
|
||||
#高级模块,包含不少的高级功能组件,这个模块可以集中开关。
|
||||
DEFINES += __HIGHGRADE__
|
||||
#依赖网络模块
|
||||
!contains (DEFINES, __NETWORKSUPPORT__): DEFINES -= __HIGHGRADE__
|
||||
contains (DEFINES, __HIGHGRADE__) {
|
||||
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##library
|
||||
##################################################################
|
||||
equals (QKIT_PRIVATE, iOSSimulator):{
|
||||
#error need
|
||||
#QMAKE_CXXFLAGS +=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
|
||||
}
|
||||
|
||||
win32 {
|
||||
LIBS += -luser32
|
||||
contains (DEFINES, __OPENGLWIDGETS__) {
|
||||
LIBS += -lopengl32 -lglu32
|
||||
}
|
||||
}else: unix {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
#min macosx target
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
|
||||
#deperated
|
||||
#QMAKE_MAC_SDK=macosx10.12
|
||||
#MACOSXSDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$${QMAKE_MACOSX_DEPLOYMENT_TARGET}.sdk
|
||||
#QMAKE_LIBDIR = $${MACOSXSDK}
|
||||
#LIBS += -F$${MACOSXSDK}/System/Library/Frameworks
|
||||
#LIBS += -L$${MACOSXSDK}/usr/lib
|
||||
LIBS += -framework DiskArbitration -framework Cocoa -framework IOKit
|
||||
}else:contains(QKIT_PRIVATE, iOS|iOSSimulator){
|
||||
QMAKE_LFLAGS += -ObjC -lsqlite3 -lz
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8
|
||||
}
|
||||
}
|
||||
|
||||
##################################################################
|
||||
##include directories
|
||||
##################################################################
|
||||
defineReplace(qqt_header){
|
||||
path = $$1
|
||||
!isEmpty(2) : error("qqt_header(path) requires one arguments.")
|
||||
isEmpty(1) : error("qqt_header(path) requires one arguments.")
|
||||
|
||||
#basic
|
||||
command += $${path}
|
||||
command += $${path}/core
|
||||
command += $${path}/gui
|
||||
command += $${path}/widgets
|
||||
command += $${path}/multimedia
|
||||
command += $${path}/sql
|
||||
command += $${path}/frame
|
||||
command += $${path}/printsupport
|
||||
|
||||
#charts
|
||||
command += $${path}/charts
|
||||
command += $${path}/charts/qcustomplot
|
||||
|
||||
#network
|
||||
command += $${path}/network
|
||||
command += $${path}/network/qextserialport
|
||||
|
||||
##soap (web service)
|
||||
command += $${path}/network/soap
|
||||
|
||||
##gumbo library
|
||||
command += $${path}/network/gumbo/query/src
|
||||
command += $${path}/network/gumbo/parser/src
|
||||
win32{
|
||||
command += $${path}/network/gumbo/parser/visualc/include
|
||||
}
|
||||
|
||||
#plugin support
|
||||
command += $${path}/pluginsupport
|
||||
command += $${path}/pluginsupport/devicewatcher
|
||||
|
||||
#exquisite widgets
|
||||
command += $${path}/exquisite
|
||||
command += $${path}/exquisite/clicksoundwidgets
|
||||
command += $${path}/exquisite/clickwidgets
|
||||
command += $${path}/exquisite/svgwidgets
|
||||
command += $${path}/exquisite/gifwidgets
|
||||
command += $${path}/exquisite/openglwidgets
|
||||
command += $${path}/exquisite/colorwidgets
|
||||
command += $${path}/exquisite/mathml
|
||||
command += $${path}/exquisite/dmmu
|
||||
|
||||
##qr code library
|
||||
command += $${path}/exquisite/qrcode/qrencode
|
||||
command += $${path}/exquisite/qrcode/qrdecode
|
||||
command += $${path}/exquisite/qrcode/qrdecode/zxing
|
||||
win32-g++{
|
||||
command += $${path}/exquisite/qrcode/qrdecode/zxing/win32/zxing
|
||||
}
|
||||
win32-msvc*{
|
||||
command += $${path}/exquisite/qrcode/qrdecode/zxing/win32/zxing \
|
||||
$${path}/exquisite/qrcode/qrdecode/zxing/win32/zxing/msvc
|
||||
}
|
||||
|
||||
#highgrade module
|
||||
command += $${path}/highgrade
|
||||
|
||||
return ($$command)
|
||||
}
|
||||
|
||||
INCLUDEPATH += $$qqt_header($$PWD)
|
199
lib/lib_library.pri
Normal file
199
lib/lib_library.pri
Normal file
@ -0,0 +1,199 @@
|
||||
################################################
|
||||
##qqt_library.pri, linking workflow
|
||||
##QQt based app please include this pri to link qqt library
|
||||
##dependence qqt_version.pri qqt_header.pri
|
||||
##从SDK ROOT链接QQt Library
|
||||
##don't modify this pri file, if you catch any issure, please make issure
|
||||
##https://gitee.com/drabel/LibQt/issues/new?issue%5Bassignee_id%5D=0&issue%5Bmilestone_id%5D=0
|
||||
##2017年10月29日08:54:28
|
||||
################################################
|
||||
|
||||
################################################
|
||||
##link QQt logic function
|
||||
################################################
|
||||
defineReplace(link_qqt_library) {
|
||||
contains(DEFINES, __DARWIN__) {
|
||||
LINK += -F$${QQT_LIB_PWD}
|
||||
LINK += -framework QQt
|
||||
} else {
|
||||
LINK += -L$${QQT_LIB_PWD}
|
||||
#win can't with the blank! error: -l QQt
|
||||
LINK += -lQQt
|
||||
}
|
||||
return ($${LINK})
|
||||
}
|
||||
|
||||
#在Mac上,Creator运行app前必须拷贝依赖,是个deploy过程。
|
||||
#Mac不用于其他操作系统,对于bundle,任何运行时刻都需要拷贝依赖,包括build完成后。
|
||||
#build path里的app bundle和deploy root里的app bundle要运行都必须拷贝好QQt,这是macOS特有的。
|
||||
#这个函数可以修正任何位置的app bundle
|
||||
#在链接QQt的时候,也就是这里 修正app bundle有利于统一app deploy过程。app_deploy没有做这个工作,和其他平台相近似。
|
||||
defineReplace(deploy_qqt_to_app_deploy_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
deploy_path = $$1
|
||||
isEmpty(1): error("deploy_qqt_to_app_deploy_path_on_mac(deploy_path) requires one argument")
|
||||
create_command = $$create_mac_sdk()
|
||||
APP_DEST_DIR=$${deploy_path}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command =
|
||||
command += chmod +x $${PWD}/linux_cur_path.sh &&
|
||||
command += . $${PWD}/linux_cur_path.sh &&
|
||||
command += rm -rf $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
#拷贝QQt.framework到app bundle里。其实,是直接在app里执行的。这个会移动走。
|
||||
command += mkdir -p $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += cd $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
#修复QQt.framework里的快捷方式
|
||||
command += $${create_command} &&
|
||||
command += chmod +x $${PWD}/linux_cd_path.sh &&
|
||||
command += . $${PWD}/linux_cd_path.sh &&
|
||||
|
||||
#Qt Creator create framework but use absolute path to make link
|
||||
#QMAKE_POST_LINK += cp -rf $${QQT_LIB_PWD}/QQt.framework \
|
||||
# $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks &&
|
||||
#更改app bundle链接QQt的位置。
|
||||
command += install_name_tool -change QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
@rpath/QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
$${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
|
||||
command += macdeployqt $${APP_DEST_DIR}/$${TARGET}.app -verbose=1
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 5){
|
||||
command += &&
|
||||
command += chmod +x $${PWD}/mac_deploy_qt4.sh &&
|
||||
command += $${PWD}/mac_deploy_qt4.sh $${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}
|
||||
}
|
||||
#message($$command)
|
||||
return ($${command})
|
||||
}
|
||||
|
||||
#这个macOS POST LINK其实是因为qmake的一个bug而添加的,qmake生成的framework结构有错误,里边的快捷方式都不对,所以在此修正。
|
||||
#这个只是bug1,还有bug2.
|
||||
#Creator在运行app之前,如果不把这些依赖拷贝到中间目标生成目录里,就不能运行。这是macOS特有的,别的系统都不需要。所以这个修正发生在
|
||||
#这个是bug2,还有bug3
|
||||
#qmake在苹果下生成的app,默认链接QQt的位置是绝对路径!这里修复为相对路径。拷贝过去也失去了相对路径。
|
||||
#好了,经过以上修复,app可以直接使用了。
|
||||
defineReplace(fix_app_bundle_with_qqt_in_building_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
APP_DEST_DIR=$${DESTDIR}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command = $$deploy_qqt_to_app_deploy_path_on_mac($${APP_DEST_DIR})
|
||||
return ($$command)
|
||||
}
|
||||
|
||||
#这个函数用于Lib链接QQt的时候对Lib的针对qmake生成bundle的bug的修正,
|
||||
#把生成的lib的ln绝对路径更换为相对路径
|
||||
#这个事情发生在build station里,Creator要运行这个里边需要依赖这个工作。
|
||||
#multi link需要发布这个lib也需要依赖这个工作。
|
||||
#必经之路。
|
||||
defineReplace(fix_lib_in_building_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
deploy_path = $$1
|
||||
isEmpty(1): error("fix_lib_in_building_path_on_mac(deploy_path) requires one argument")
|
||||
create_command = $$create_mac_sdk()
|
||||
APP_DEST_DIR=$${deploy_path}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command =
|
||||
command += chmod +x $${PWD}/linux_cur_path.sh &&
|
||||
command += . $${PWD}/linux_cur_path.sh &&
|
||||
command += rm -rf $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += mkdir -p $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += cd $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += $${create_command} &&
|
||||
command += chmod +x $${PWD}/linux_cd_path.sh &&
|
||||
command += . $${PWD}/linux_cd_path.sh &&
|
||||
|
||||
#Qt Creator create framework but use absolute path to make link
|
||||
#QMAKE_POST_LINK += cp -rf $${QQT_LIB_PWD}/QQt.framework \
|
||||
# $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks &&
|
||||
command += install_name_tool -change QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
@rpath/QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
$${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
|
||||
command += macdeployqt $${APP_DEST_DIR}/$${TARGET}.app -verbose=1
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 5){
|
||||
command += &&
|
||||
command += chmod +x $${PWD}/mac_deploy_qt4.sh &&
|
||||
command += $${PWD}/mac_deploy_qt4.sh $${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}
|
||||
}
|
||||
#message($$command)
|
||||
return ($${command})
|
||||
}
|
||||
|
||||
################################################
|
||||
##link qqt work flow
|
||||
################################################
|
||||
#-------module name QQt
|
||||
MODULE_NAME=QQt
|
||||
module_name = $$lower($${MODULE_NAME})
|
||||
|
||||
#-------define the all path
|
||||
#QQT std dir is not same to app std dir
|
||||
QQT_STD_DIR = QQt/$${QKIT_STD_DIR}
|
||||
#link from build need this, if you havent mod QQt.pro, this can only be two value, qqt's: [src]/$DESTDIR
|
||||
QQT_DST_DIR = src/bin
|
||||
#create platform sdk need this
|
||||
QQT_SRC_PWD=$${PWD}
|
||||
|
||||
#need use qqt subdir proj
|
||||
QQT_BUILD_PWD=$${QQT_BUILD_ROOT}/$${QQT_STD_DIR}/$${QQT_DST_DIR}
|
||||
#sdk path
|
||||
QQT_SDK_PWD = $${QQT_SDK_ROOT}/$${QQT_STD_DIR}
|
||||
#message(QQt sdk install here:$${QQT_SDK_PWD})
|
||||
|
||||
contains(CONFIG, link_from_sdk) {
|
||||
QQT_LIB_PWD = $${QQT_SDK_ROOT}/$${QQT_STD_DIR}/lib
|
||||
} else: contains(CONFIG, link_from_build) {
|
||||
QQT_LIB_PWD = $${QQT_BUILD_ROOT}/$${QQT_STD_DIR}/$${QQT_DST_DIR}
|
||||
}
|
||||
|
||||
#这里不仅仅目标为windows的时候,才会转换,
|
||||
#开发Host为Windows的时候,都要转换。
|
||||
#contains(QKIT_PRIVATE, WIN32||WIN64) {
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QQT_BUILD_ROOT~=s,/,\\,g
|
||||
QQT_SDK_ROOT~=s,/,\\,g
|
||||
APP_DEPLOY_ROOT~=s,/,\\,g
|
||||
|
||||
QKIT_STD_DIR~=s,/,\\,g
|
||||
QQT_STD_DIR~=s,/,\\,g
|
||||
QQT_DST_DIR~=s,/,\\,g
|
||||
QQT_BUILD_PWD~=s,/,\\,g
|
||||
QQT_SDK_PWD~=s,/,\\,g
|
||||
QQT_LIB_PWD~=s,/,\\,g
|
||||
}
|
||||
|
||||
#我准备把install qqt sdk移动到更合适的地方。
|
||||
contains(CONFIG, link_from_sdk) {
|
||||
#create sdk first
|
||||
QMAKE_PRE_LINK += $$create_qqt_sdk()
|
||||
#private struct
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
#Fix app里、lib里的路径问题
|
||||
#
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
QMAKE_POST_LINK += $$fix_app_bundle_with_qqt_in_building_path_on_mac()
|
||||
}
|
||||
}
|
||||
} else : contains(CONFIG, link_from_build) {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
QMAKE_POST_LINK += $$fix_app_bundle_with_qqt_in_building_path_on_mac()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#这个地方的判断方式有两种,使用QKIT_PRIVATE也可以。
|
||||
#是不是只有armeabi-v7a需要这个extra?
|
||||
contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
|
||||
ANDROID_EXTRA_LIBS = \
|
||||
$${QQT_LIB_PWD}/lib$${MODULE_NAME}.so
|
||||
}
|
||||
|
||||
#从SDK里链接QQt
|
||||
LIBS += $$link_qqt_library()
|
||||
|
||||
message (Link QQt from: $${QQT_LIB_PWD})
|
||||
message(Link QQt to $${TARGET} $${QKIT_PRIVATE} on $${QMAKE_HOST.os} \
|
||||
\(Qt Kit page FileSystem Name=$${SYSNAME}. Operating System=$${QMAKE_HOST.os}.\) )
|
||||
#TARGET must be equals to pro name ? no, TARGET must be placeed before qqt_library.pri
|
||||
#qmake pro pri is sequential
|
||||
message(Build $${TARGET} at $${OUT_PWD}/$${QKIT_STD_DIR})
|
516
lib/lib_source.pri
Normal file
516
lib/lib_source.pri
Normal file
@ -0,0 +1,516 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2016-03-24T14:08:11
|
||||
#
|
||||
#-------------------------------------------------
|
||||
#-------------------------------------------------
|
||||
#QQt source
|
||||
#Don't modify this pri
|
||||
#FDLv1.3 GPLv3 LGPLv2.1 PreviewCommercial
|
||||
|
||||
#Project link: https://gitee.com/drabel/LibQQt
|
||||
#if you succeed with LibQQt, please thumb up.
|
||||
#这里是LibQQt源文件pri,所有开关宏都在LibQQt头文件pri里开关。
|
||||
|
||||
#-------------------------------------------------
|
||||
#root dir
|
||||
HEADERS += $$PWD/qqt.h \
|
||||
$$PWD/qqt-local.h \
|
||||
$$PWD/qqtversion.h \
|
||||
$$PWD/qqt-qt.h
|
||||
#platform header
|
||||
contains (QKIT_PRIVATE, WIN32||WIN64) {
|
||||
#win32 base header
|
||||
HEADERS += $$PWD/qqtwin.h
|
||||
} else:contains (QKIT_PRIVATE, macOS||iOS||iOSSimulator) {
|
||||
#mac base header
|
||||
HEADERS += $$PWD/qqtdarwin.h
|
||||
} else:contains (QKIT_PRIVATE, ANDROID||ANDROIDX86) {
|
||||
#android base header
|
||||
HEADERS += $$PWD/qqtandroid.h
|
||||
} else {
|
||||
#linux base header
|
||||
HEADERS += $$PWD/qqtlinux.h
|
||||
}
|
||||
|
||||
#core
|
||||
SOURCES += \
|
||||
$$PWD/core/qqtcore.cpp \
|
||||
$$PWD/core/qqtevent.cpp \
|
||||
$$PWD/core/qqtdictionary.cpp \
|
||||
$$PWD/core/qqtobjectmanager.cpp
|
||||
HEADERS += \
|
||||
$$PWD/core/qqtcore.h \
|
||||
$$PWD/core/qqtevent.h \
|
||||
$$PWD/core/qqtdictionary.h \
|
||||
$$PWD/core/qqtobjectmanager.h
|
||||
|
||||
#后台进程支持,这个只有ios不支持,这个支持在源文件pri里处理。
|
||||
DEFINES += __PROCESSMODULE__
|
||||
#ios has no backend process
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator) {
|
||||
DEFINES -= __PROCESSMODULE__
|
||||
}
|
||||
|
||||
#sql
|
||||
SOURCES += \
|
||||
$$PWD/sql/qqtsql.cpp
|
||||
HEADERS += \
|
||||
$$PWD/sql/qqtsql.h
|
||||
SOURCES += \
|
||||
$$PWD/sql/qqtsqlquery.cpp
|
||||
HEADERS += \
|
||||
$$PWD/sql/qqtsqlquery.h
|
||||
|
||||
#gui
|
||||
SOURCES += \
|
||||
$$PWD/gui/qqttablemodel.cpp \
|
||||
$$PWD/gui/qqtdicttreemodel.cpp \
|
||||
$$PWD/gui/qqttreemodel.cpp \
|
||||
$$PWD/gui/qqtftptreemodel.cpp \
|
||||
$$PWD/gui/qqtsqltreemodel.cpp \
|
||||
$$PWD/gui/qqtjsontreemodel.cpp \
|
||||
$$PWD/gui/qqtxmltreemodel.cpp \
|
||||
$$PWD/gui/qqtfilesystemtreemodel.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/gui/qqttablemodel.h \
|
||||
$$PWD/gui/qqttreemodel.h \
|
||||
$$PWD/gui/qqtdicttreemodel.h \
|
||||
$$PWD/gui/qqtftptreemodel.h \
|
||||
$$PWD/gui/qqtsqltreemodel.h \
|
||||
$$PWD/gui/qqtjsontreemodel.h \
|
||||
$$PWD/gui/qqtxmltreemodel.h \
|
||||
$$PWD/gui/qqtfilesystemtreemodel.h \
|
||||
$$PWD/gui/qqtgui.h
|
||||
|
||||
#widgets
|
||||
SOURCES += \
|
||||
$$PWD/widgets/qqtspinbox.cpp \
|
||||
$$PWD/widgets/qqtdoublespinbox.cpp \
|
||||
$$PWD/widgets/qqtdateedit.cpp \
|
||||
$$PWD/widgets/qqttimeedit.cpp \
|
||||
$$PWD/widgets/qqtdatetimeedit.cpp
|
||||
HEADERS += \
|
||||
$$PWD/widgets/qqtspinbox.h \
|
||||
$$PWD/widgets/qqtdoublespinbox.h \
|
||||
$$PWD/widgets/qqtdateedit.h \
|
||||
$$PWD/widgets/qqttimeedit.h \
|
||||
$$PWD/widgets/qqtdatetimeedit.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/widgets/qqtcheckbox.cpp \
|
||||
$$PWD/widgets/qqtheaderview.cpp \
|
||||
$$PWD/widgets/qqtlistview.cpp \
|
||||
$$PWD/widgets/qqtprogressbar.cpp \
|
||||
$$PWD/widgets/qqtpushbutton.cpp \
|
||||
$$PWD/widgets/qqtradiobutton.cpp \
|
||||
$$PWD/widgets/qqttableview.cpp \
|
||||
$$PWD/widgets/qqttabbar.cpp \
|
||||
$$PWD/widgets/qqttabwidget.cpp \
|
||||
$$PWD/widgets/qqttreeview.cpp \
|
||||
$$PWD/widgets/qqttablewidget.cpp \
|
||||
$$PWD/widgets/qqtgraphicsscene.cpp \
|
||||
$$PWD/widgets/qqtgraphicsitem.cpp \
|
||||
$$PWD/widgets/qqtgraphicsview.cpp \
|
||||
$$PWD/widgets/qqttreewidget.cpp \
|
||||
$$PWD/widgets/qqtwidget.cpp \
|
||||
$$PWD/widgets/qqtwidgets.cpp \
|
||||
$$PWD/widgets/qqtlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/widgets/qqtcheckbox.h \
|
||||
$$PWD/widgets/qqtheaderview.h \
|
||||
$$PWD/widgets/qqtlistview.h \
|
||||
$$PWD/widgets/qqtprogressbar.h \
|
||||
$$PWD/widgets/qqtpushbutton.h \
|
||||
$$PWD/widgets/qqtradiobutton.h \
|
||||
$$PWD/widgets/qqttableview.h \
|
||||
$$PWD/widgets/qqttabbar.h \
|
||||
$$PWD/widgets/qqttabwidget.h \
|
||||
$$PWD/widgets/qqttreeview.h \
|
||||
$$PWD/widgets/qqttablewidget.h \
|
||||
$$PWD/widgets/qqtgraphicsscene.h \
|
||||
$$PWD/widgets/qqtgraphicsitem.h \
|
||||
$$PWD/widgets/qqtgraphicsview.h \
|
||||
$$PWD/widgets/qqttreewidget.h \
|
||||
$$PWD/widgets/qqtwidget.h \
|
||||
$$PWD/widgets/qqtwidgets.h \
|
||||
$$PWD/widgets/qqtlabel.h
|
||||
FORMS += \
|
||||
$$PWD/widgets/qqtprogressbar.ui
|
||||
|
||||
#frame
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtsysteminfo.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtsysteminfo.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtlineeditwithsearch.cpp \
|
||||
$$PWD/frame/qqtosdwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtlineeditwithsearch.h \
|
||||
$$PWD/frame/qqtosdwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.h
|
||||
FORMS += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.ui
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtanimation.cpp \
|
||||
$$PWD/frame/qqtapplication.cpp \
|
||||
$$PWD/frame/qqtwifidbwidget.cpp \
|
||||
$$PWD/frame/qqtprogressdialog.cpp \
|
||||
$$PWD/frame/qqtpassworddialog.cpp \
|
||||
$$PWD/frame/qqtframe.cpp \
|
||||
$$PWD/frame/qqtdialog.cpp \
|
||||
$$PWD/frame/qqtinput.cpp \
|
||||
$$PWD/frame/qqtmsgbox.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtanimation.h \
|
||||
$$PWD/frame/qqtapplication.h \
|
||||
$$PWD/frame/qqtwifidbwidget.h \
|
||||
$$PWD/frame/qqtprogressdialog.h \
|
||||
$$PWD/frame/qqtpassworddialog.h \
|
||||
$$PWD/frame/qqtframe.h \
|
||||
$$PWD/frame/qqtdialog.h \
|
||||
$$PWD/frame/qqtinput.h \
|
||||
$$PWD/frame/qqtmsgbox.h
|
||||
FORMS += \
|
||||
$$PWD/frame/qqtprogressdialog.ui \
|
||||
$$PWD/frame/qqtpassworddialog.ui \
|
||||
$$PWD/frame/qqtinput.ui \
|
||||
$$PWD/frame/qqtmsgbox.ui
|
||||
|
||||
|
||||
#multimedia
|
||||
#support Qt5, if Qt4 want to use, you need compile QtMultiMedia for Qt4.
|
||||
#audio success. video arm mips
|
||||
#TODO: video +wince +android +ios +macOS +win +linux
|
||||
contains (DEFINES, __MULTIMEDIA__) {
|
||||
#mplayer
|
||||
contains (DEFINES, __PROCESSMODULE__){
|
||||
SOURCES += $$PWD/multimedia/qqtmplayer.cpp
|
||||
HEADERS += $$PWD/multimedia/qqtmplayer.h
|
||||
}
|
||||
|
||||
#audio
|
||||
SOURCES += \
|
||||
$$PWD/multimedia/qqtwavaudiomanager.cpp \
|
||||
$$PWD/multimedia/qqtaudiomanager.cpp
|
||||
HEADERS += \
|
||||
$$PWD/multimedia/qqtwavaudiomanager.h \
|
||||
$$PWD/multimedia/qqtaudiomanager.h
|
||||
|
||||
#audio effect
|
||||
#using QSound (QSoundEffect optional)
|
||||
SOURCES += \
|
||||
$$PWD/multimedia/qqtsoundeffect.cpp
|
||||
HEADERS += \
|
||||
$$PWD/multimedia/qqtsoundeffect.h
|
||||
}
|
||||
|
||||
|
||||
#printsupport
|
||||
#注释:在qqt_header.pri打开 DEFINES += __PRINTSUPPORT__
|
||||
contains (DEFINES, __PRINTSUPPORT__) {
|
||||
SOURCES += $$PWD/printsupport/qqtprinter.cpp
|
||||
HEADERS += $$PWD/printsupport/qqtprinter.h
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtword.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtword.h
|
||||
|
||||
}
|
||||
|
||||
contains(DEFINES, __QQTCHARTS__) {
|
||||
SOURCES += \
|
||||
$$PWD/charts/qqtchart.cpp \
|
||||
$$PWD/charts/qqtchartview.cpp
|
||||
HEADERS += \
|
||||
$$PWD/charts/qqtchart.h \
|
||||
$$PWD/charts/qqtchartview.h
|
||||
}
|
||||
|
||||
#network
|
||||
contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
SOURCES += $$PWD/network/qqtnetwork.cpp
|
||||
HEADERS += $$PWD/network/qqtnetwork.h
|
||||
|
||||
#报文 用户重要
|
||||
HEADERS += $$PWD/network/qqtmessage.h
|
||||
|
||||
#协议 用户重要
|
||||
HEADERS += $$PWD/network/qqtprotocol.h
|
||||
|
||||
#protocol manager for server iodevice
|
||||
SOURCES += $$PWD/network/qqtprotocolmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtprotocolmanager.h
|
||||
|
||||
#tcp and udp iodevice
|
||||
contains(DEFINES, __TCPUDPSOCKET__){
|
||||
#tcp client iodevice
|
||||
SOURCES += $$PWD/network/qqttcpclient.cpp
|
||||
HEADERS += $$PWD/network/qqttcpclient.h
|
||||
|
||||
#tcp server iodevice
|
||||
SOURCES += $$PWD/network/qqttcpserver.cpp
|
||||
HEADERS += $$PWD/network/qqttcpserver.h
|
||||
|
||||
#udp client iodevice
|
||||
SOURCES += $$PWD/network/qqtudpclient.cpp
|
||||
HEADERS += $$PWD/network/qqtudpclient.h
|
||||
|
||||
#udp server iodevice
|
||||
SOURCES += $$PWD/network/qqtudpserver.cpp
|
||||
HEADERS += $$PWD/network/qqtudpserver.h
|
||||
}
|
||||
|
||||
#serialport iodevice
|
||||
SOURCES += $$PWD/network/qqtserialport.cpp
|
||||
HEADERS += $$PWD/network/qqtserialport.h
|
||||
|
||||
#bluetooth iodevice
|
||||
#注释:在qqt_header.pri打开 DEFINES += __BLUETOOTH__
|
||||
contains (DEFINES, __BLUETOOTH__) {
|
||||
#bluetooth client iodevice
|
||||
SOURCES += $$PWD/network/qqtbluetoothclient.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothclient.h
|
||||
|
||||
#bluetooth server iodevice
|
||||
SOURCES += $$PWD/network/qqtbluetoothserver.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothserver.h
|
||||
|
||||
#bluetooth manager
|
||||
SOURCES += $$PWD/network/qqtbluetoothmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothmanager.h
|
||||
}
|
||||
|
||||
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
||||
#websocket client iodevice
|
||||
SOURCES += $$PWD/network/qqtwebsocketclient.cpp
|
||||
HEADERS += $$PWD/network/qqtwebsocketclient.h
|
||||
#websocket server iodevice
|
||||
SOURCES += $$PWD/network/qqtwebsocketserver.cpp
|
||||
HEADERS += $$PWD/network/qqtwebsocketserver.h
|
||||
}
|
||||
|
||||
#ethnet(+wifi) manager
|
||||
#arm mips
|
||||
#TODO: +wince +android +ios +macOS? +win? +linux?
|
||||
contains(QKIT_PRIVATE, EMBEDDED||ARM32||MIPS32) {
|
||||
SOURCES += $$PWD/network/qqtethenetmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtethenetmanager.h
|
||||
SOURCES += $$PWD/frame/qqtwifiwidget.cpp
|
||||
HEADERS += $$PWD/frame/qqtwifiwidget.h
|
||||
FORMS += $$PWD/frame/qqtwifiwidget.ui
|
||||
}
|
||||
|
||||
#webaccess manager
|
||||
contains (DEFINES, __WEBACCESSSUPPORT__) {
|
||||
SOURCES += $$PWD/network/qqtwebaccessmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtwebaccessmanager.h
|
||||
}
|
||||
}
|
||||
|
||||
contains (DEFINES, __EXQUISITE__) {
|
||||
#exquisite
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtframelesshelper.cpp \
|
||||
$$PWD/exquisite/qqtframelesshelperprivate.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtframelesshelper.h \
|
||||
$$PWD/exquisite/qqtframelesshelperprivate.h
|
||||
|
||||
#can click sound support widgets
|
||||
contains (DEFINES, __CLICKSOUNDWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundhelper.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundhelper.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundhelper.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundhelper.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundhelper.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundhelper.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundwidget.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundwidget.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundwidget.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundwidget.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundlabel.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundlabel.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundlabel.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundlabel.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundlabel.h
|
||||
}
|
||||
|
||||
#can click support widgets
|
||||
contains (DEFINES, __CLICKWIDGETS__) {
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickhelper.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickhelper.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickhelper.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickhelper.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickhelper.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickhelper.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickwidget.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickwidget.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickwidget.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickwidget.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclicklabel.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclicklabel.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclicklabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclicklabel.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclicklabel.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclicklabel.h
|
||||
}
|
||||
|
||||
#dialog
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtpopupdialog.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtpopupdialog.h
|
||||
|
||||
#widget
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtfadewidget.cpp \
|
||||
$$PWD/exquisite/qqtninepatchwidget.cpp \
|
||||
$$PWD/exquisite/qqtshadowwidget.cpp \
|
||||
$$PWD/exquisite/qqtflipstackedwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtninepatchwidget.h \
|
||||
$$PWD/exquisite/qqtfadewidget.h \
|
||||
$$PWD/exquisite/qqtshadowwidget.h \
|
||||
$$PWD/exquisite/qqtflipstackedwidget.h
|
||||
|
||||
#special
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtcustompianokeyboard.cpp \
|
||||
$$PWD/exquisite/qqtcustomverificationcode.cpp \
|
||||
$$PWD/exquisite/qqtrulerslider.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtcustompianokeyboard.h \
|
||||
$$PWD/exquisite/qqtcustomverificationcode.h \
|
||||
$$PWD/exquisite/qqtrulerslider.h
|
||||
|
||||
#progressbar
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtcustomprogressbar.cpp \
|
||||
$$PWD/exquisite/qqtcustomspeedmeter.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtcustomprogressbar.h \
|
||||
$$PWD/exquisite/qqtcustomspeedmeter.h
|
||||
|
||||
#pushbutton
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtripplepushbutton.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtripplepushbutton.h
|
||||
|
||||
#label
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtledbannerlabel.cpp \
|
||||
$$PWD/exquisite/qqtmarqueelabel.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtmarqueelabel.h \
|
||||
$$PWD/exquisite/qqtledbannerlabel.h
|
||||
|
||||
#tabwidget
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqthorizontaltexttabbar.cpp \
|
||||
$$PWD/exquisite/qqthorizontaltexttabwidget.cpp \
|
||||
$$PWD/exquisite/qqtpicturetabbar.cpp \
|
||||
$$PWD/exquisite/qqtpicturetabwidget.cpp \
|
||||
$$PWD/exquisite/qqtslidetabbar.cpp \
|
||||
$$PWD/exquisite/qqtslidetabwidget.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtslidetabbar.h \
|
||||
$$PWD/exquisite/qqtslidetabwidget.h \
|
||||
$$PWD/exquisite/qqtpicturetabwidget.h \
|
||||
$$PWD/exquisite/qqtpicturetabbar.h \
|
||||
$$PWD/exquisite/qqthorizontaltexttabwidget.h \
|
||||
$$PWD/exquisite/qqthorizontaltexttabbar.h
|
||||
|
||||
|
||||
#svg widgets
|
||||
contains (DEFINES, __SVGWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgwidget.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgpushbutton.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgcheckbox.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgradiobutton.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtgraphicssvgitem.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvglabel.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgprogressbar.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgwidget.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgpushbutton.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgcheckbox.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgradiobutton.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtgraphicssvgitem.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvglabel.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgprogressbar.h
|
||||
}
|
||||
|
||||
#gif widgets
|
||||
contains (DEFINES, __GIFWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifwidget.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgiflabel.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifpushbutton.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifcheckbox.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifradiobutton.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifprogressbar.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifwidget.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgiflabel.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifpushbutton.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifcheckbox.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifradiobutton.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifprogressbar.h
|
||||
}
|
||||
|
||||
#opengl widgets
|
||||
contains (DEFINES, __OPENGLWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwidget.cpp \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwindow.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwidget.h \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwindow.h
|
||||
}
|
||||
|
||||
contains (DEFINES, __COLORWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorwidget.cpp \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorwidget.h \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorlabel.h
|
||||
}
|
||||
}
|
||||
|
||||
include ($$PWD/qqt_3rdparty.pri)
|
213
multi-link/add_base_header.pri
Normal file
213
multi-link/add_base_header.pri
Normal file
@ -0,0 +1,213 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
#app_base_header.pri
|
||||
#应用程序和Library的基础header。
|
||||
#---------------------------------------------------------------------------------
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QSYS
|
||||
##################################################################in theory, this should not be limited to 4.8.0, no limit is good.
|
||||
##Qt version
|
||||
QT += core sql network gui xml
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
# release open debug output
|
||||
CONFIG(debug, debug|release) {
|
||||
} else {
|
||||
DEFINES -= QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
#compatible old version QQt (deperated)
|
||||
greaterThan(QT_MAJOR_VERSION, 4): DEFINES += __QT5__
|
||||
|
||||
#defined in qqtcore.h
|
||||
#lessThan(QT_MAJOR_VERSION, 5):DEFINES += nullptr=0
|
||||
|
||||
#mingw要加速编译,make -j20,-j参数是最好的解决办法。
|
||||
|
||||
#close win32 no using fopen_s warning
|
||||
win32:DEFINES += _CRT_SECURE_NO_WARNINGS #fopen fopen_s
|
||||
|
||||
#msvc支持设置
|
||||
msvc {
|
||||
MSVC_CCFLAGS =
|
||||
#this three pragma cause mingw errors
|
||||
msvc:MSVC_CCFLAGS += /wd"4819" /wd"4244" /wd"4100"
|
||||
|
||||
#UTF8编码
|
||||
DEFINES += __MSVC_UTF8_SUPPORT__
|
||||
msvc:MSVC_CCFLAGS += /execution-charset:utf-8
|
||||
msvc:MSVC_CCFLAGS += /source-charset:utf-8
|
||||
#msvc:MSVC_CCFLAGS += /utf-8 #这一个是快捷方式,顶上边两个。
|
||||
|
||||
#指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp
|
||||
msvc:MSVC_CCFLAGS += /MP
|
||||
#指出:这个FLAG只能用于MSVC
|
||||
|
||||
msvc:QMAKE_CFLAGS += $${MSVC_CCFLAGS}
|
||||
msvc:QMAKE_CXXFLAGS += $${MSVC_CCFLAGS}
|
||||
|
||||
#指定stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h 然后在 stable.h里 包含你所用到的所有 Qt 头文件
|
||||
#在.pro 文件中加入一行, 加在这里,加速编译。
|
||||
#msvc:PRECOMPILED_HEADER = $${PWD}/lib-qt.h
|
||||
#指出:precompiler header只能用于MSVC
|
||||
#这个功能可用,可是编译问题比较多,不方便,所以默认不开开。
|
||||
}
|
||||
|
||||
#CONFIG += debug_and_release
|
||||
#CONFIG += build_all
|
||||
#if some bug occured, maybe this help me, close some warning
|
||||
CCFLAG =
|
||||
!win32:CCFLAGS = -Wno-unused-parameter -Wno-reorder -Wno-c++11-extensions -Wno-c++11-long-long -Wno-comment
|
||||
QMAKE_CFLAGS += $${CCFLAGS}
|
||||
QMAKE_CXXFLAGS += $${CCFLAGS}
|
||||
|
||||
lessThan(QT_VERSION, 4.8.0) {
|
||||
message(A. ensure your compiler support c++11 feature)
|
||||
message(B. suggest Qt version >= 4.8.0)
|
||||
#error( error occured!)
|
||||
}
|
||||
|
||||
contains(TEMPLATE, lib) {
|
||||
#create sdk need
|
||||
CONFIG += create_prl
|
||||
}
|
||||
|
||||
#macOS下必须开开bundle
|
||||
contains(QSYS_PRIVATE, macOS){
|
||||
contains(TEMPLATE, app) {
|
||||
CONFIG += app_bundle
|
||||
} else: contains(TEMPLATE, lib) {
|
||||
#仅仅用这个 这个是lib用的pri
|
||||
CONFIG += lib_bundle
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#################################################################
|
||||
##version
|
||||
#################################################################
|
||||
#user can use app_version.pri to modify app version once, once is all. DEFINES += APP_VERSION=0.0.0 is very good.
|
||||
#unix:VERSION = $${QQT_VERSION}
|
||||
#bug?:open this macro, TARGET will suffixed with major version.
|
||||
#win32:VERSION = $${QQT_VERSION4}
|
||||
QMAKE_TARGET_FILE = "$${TARGET}"
|
||||
QMAKE_TARGET_PRODUCT = "$${TARGET}"
|
||||
QMAKE_TARGET_COMPANY = "www.$${TARGET}.com"
|
||||
QMAKE_TARGET_DESCRIPTION = "$${TARGET} Foundation Class"
|
||||
QMAKE_TARGET_COPYRIGHT = "Copyright 2017-2022 $${TARGET} Co., Ltd. All rights reserved"
|
||||
|
||||
win32 {
|
||||
#common to use upload, this can be ignored.
|
||||
#open this can support cmake config.h.in
|
||||
#configure_file(qqtversion.h.in, qqtversion.h) control version via cmake.
|
||||
#qmake version config and cmake version config is conflicted
|
||||
#RC_FILE += qqt.rc
|
||||
#RC_ICONS=
|
||||
RC_LANG=0x0004
|
||||
RC_CODEPAGE=
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##build lib or link lib
|
||||
#################################################################
|
||||
##different target:
|
||||
##-----------------------------------------------
|
||||
##win platform:
|
||||
##build lib dll + LIB_LIBRARY
|
||||
##build lib lib + LIB_STATIC_LIBRARY
|
||||
##link lib lib + LIB_STATIC_LIBRARY
|
||||
##link lib dll + ~~
|
||||
##- - - - - - - - - - - - - - - - - - - - -
|
||||
##*nix platform:
|
||||
##build and link lib dll or lib + ~~
|
||||
##-----------------------------------------------
|
||||
#link Lib static library in some occation on windows
|
||||
#when link Lib static library, if no this macro, headers can't be linked on windows.
|
||||
#在这里添加了LIB_STATIC_LIBRARY 用户可以使用 还有LIB_LIBRARY
|
||||
contains(QSYS_PRIVATE, Win32|Win64 || iOS|iOSSimulator) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw|ios{
|
||||
#on my computer, Qt library are all static library?
|
||||
DEFINES += LIB_STATIC_LIBRARY
|
||||
message(Build $${TARGET} LIB_STATIC_LIBRARY is defined. build and link)
|
||||
}
|
||||
|
||||
#link and build all need this macro
|
||||
contains(DEFINES, LIB_STATIC_LIBRARY) {
|
||||
}
|
||||
}
|
||||
|
||||
################################################################
|
||||
##build cache (此处为中间目标目录,对用户并不重要)
|
||||
##此处加以干涉,使目录清晰。
|
||||
##此处关于DESTDIR的设置,导致用户必须把这个文件的包含,提前到最前边的位置,才能进行App里的目录操作。
|
||||
##删除干涉?
|
||||
##用户注意:(done in app_base_manager), 首先include(app_link_lib_library.pri),然后做app的工作,和include其他pri,包括LibLib提供的其他pri,保证这个顺序就不会出错了。
|
||||
##对编译目标目录进行干涉管理,显得更加细腻。
|
||||
##用户注意:这里相当于给编译中间目录加了一个自动校准,属于校正范畴。
|
||||
################################################################
|
||||
isEmpty(OBJECTS_DIR):OBJECTS_DIR = obj
|
||||
isEmpty(MOC_DIR):MOC_DIR = obj/moc.cpp
|
||||
isEmpty(UI_DIR):UI_DIR = obj/ui.h
|
||||
isEmpty(RCC_DIR):RCC_DIR = qrc
|
||||
#这样做保持了App工程和LibLib工程中间目录的一致性,但是并不必要。
|
||||
isEmpty(DESTDIR):DESTDIR = bin
|
||||
|
||||
################################################################
|
||||
##Lib Functions Macro
|
||||
################################################################
|
||||
#You need switch these more macro according to your needs when you build this library
|
||||
#You can tailor Lib with these macro.
|
||||
#Default: macroes is configed, some open, some close, compatibled to special accotation.
|
||||
##App希望裁剪LibLib,开关这个文件里的组件宏,用户有必要读懂这个头文件。up to so.
|
||||
|
||||
##################C++11 Module###############################
|
||||
#if you use C++11, open this annotation. suggest: ignore
|
||||
#DEFINES += __CPP11__
|
||||
contains (DEFINES, __CPP11__) {
|
||||
#macOS gcc Qt4.8.7
|
||||
#qobject.h fatal error: 'initializer_list' file not found,
|
||||
#Qt4.8.7 can't support c++11 features
|
||||
#QMAKE_CXXFLAGS += "-std=c++11"
|
||||
#QMAKE_CXXFLAGS += "-std=c++0x"
|
||||
|
||||
#below: gcc version > 4.6.3
|
||||
#Open this Config, Why in Qt4 works? see qmake config auto ignored this feature.
|
||||
#In Qt5? don't need open this config, qmake auto add c++11 support on linux plat.
|
||||
#on windows mingw32? need test
|
||||
#CONFIG += c++11
|
||||
|
||||
#compile period
|
||||
#LibLib need c++11 support. Please ensure your compiler version.
|
||||
#LibLib used override identifier
|
||||
#lambda also need c++11
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##library
|
||||
##################################################################
|
||||
equals (QKIT_PRIVATE, iOSSimulator):{
|
||||
#error need
|
||||
#QMAKE_CXXFLAGS +=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
|
||||
}
|
||||
|
||||
win32 {
|
||||
LIBS += -luser32
|
||||
LIBS += -lopengl32 -lglu32
|
||||
}else: unix {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
#min macosx target
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
|
||||
#deperated
|
||||
#QMAKE_MAC_SDK=macosx10.12
|
||||
#MACOSXSDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$${QMAKE_MACOSX_DEPLOYMENT_TARGET}.sdk
|
||||
#QMAKE_LIBDIR = $${MACOSXSDK}
|
||||
#LIBS += -F$${MACOSXSDK}/System/Library/Frameworks
|
||||
#LIBS += -L$${MACOSXSDK}/usr/lib
|
||||
LIBS += -framework DiskArbitration -framework Cocoa -framework IOKit
|
||||
}else:contains(QSYS_PRIVATE, iOS|iOSSimulator){
|
||||
QMAKE_LFLAGS += -ObjC -lsqlite3 -lz
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8
|
||||
}
|
||||
}
|
||||
|
199
multi-link/add_base_manager.pri
Normal file
199
multi-link/add_base_manager.pri
Normal file
@ -0,0 +1,199 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
#app_base_manager.pri
|
||||
#应用程序和Library的基础管理器,统一使用这个管理器。
|
||||
#
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
################################################################################
|
||||
#包含这个pri依赖的pri
|
||||
################################################################################
|
||||
include ($${PWD}/add_platform.pri)
|
||||
include ($${PWD}/add_function.pri)
|
||||
|
||||
################################################################################
|
||||
#多链接技术入口
|
||||
################################################################################
|
||||
include($${PWD}/add_multi_link_technology.pri)
|
||||
|
||||
################################################################################
|
||||
#这里的pri提供multi link的全部函数
|
||||
################################################################################
|
||||
#公共的基础header.pri
|
||||
include ($${PWD}/add_base_header.pri)
|
||||
|
||||
#app发布所需要的函数
|
||||
include ($${PWD}/add_deploy.pri)
|
||||
|
||||
#app发布配置项需要的函数
|
||||
include ($${PWD}/add_deploy_config.pri)
|
||||
|
||||
#链接lib所需要的函数 包含lib头文件所需要的函数 设置lib宏所需要的函数
|
||||
include ($${PWD}/add_library.pri)
|
||||
|
||||
#program version
|
||||
include ($${PWD}/add_version.pri)
|
||||
|
||||
#lib发布sdk所需要的函数
|
||||
include ($${PWD}/add_sdk.pri)
|
||||
|
||||
####################################################################################
|
||||
#base manager 都做了一下这些事情
|
||||
####################################################################################
|
||||
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QSYS
|
||||
#################################################################
|
||||
##Qt version
|
||||
QT += core sql network gui xml
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
# release open debug output
|
||||
CONFIG(debug, debug|release) {
|
||||
} else {
|
||||
DEFINES -= QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
#mingw要加速编译,make -j20,-j参数是最好的解决办法。
|
||||
|
||||
#close win32 no using fopen_s warning
|
||||
win32:DEFINES += _CRT_SECURE_NO_WARNINGS #fopen fopen_s
|
||||
|
||||
#msvc支持设置
|
||||
msvc {
|
||||
MSVC_CCFLAGS =
|
||||
#this three pragma cause mingw errors
|
||||
msvc:MSVC_CCFLAGS += /wd"4819" /wd"4244" /wd"4100"
|
||||
|
||||
#UTF8编码
|
||||
DEFINES += __MSVC_UTF8_SUPPORT__
|
||||
msvc:MSVC_CCFLAGS += /execution-charset:utf-8
|
||||
msvc:MSVC_CCFLAGS += /source-charset:utf-8
|
||||
#msvc:MSVC_CCFLAGS += /utf-8 #这一个是快捷方式,顶上边两个。
|
||||
|
||||
#指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp
|
||||
msvc:MSVC_CCFLAGS += /MP
|
||||
#指出:这个FLAG只能用于MSVC
|
||||
|
||||
msvc:QMAKE_CFLAGS += $${MSVC_CCFLAGS}
|
||||
msvc:QMAKE_CXXFLAGS += $${MSVC_CCFLAGS}
|
||||
|
||||
#指定stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h 然后在 stable.h里 包含你所用到的所有 Qt 头文件
|
||||
#在.pro 文件中加入一行, 加在这里,加速编译。
|
||||
#msvc:PRECOMPILED_HEADER = $${PWD}/lib-qt.h
|
||||
#指出:precompiler header只能用于MSVC
|
||||
#这个功能可用,可是编译问题比较多,不方便,所以默认不开开。
|
||||
}
|
||||
|
||||
#macOS下必须开开bundle
|
||||
contains(QSYS_PRIVATE, macOS){
|
||||
contains(TEMPLATE, app) {
|
||||
CONFIG += app_bundle
|
||||
} else: contains(TEMPLATE, lib) {
|
||||
CONFIG += lib_bundle
|
||||
}
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##build lib or link lib
|
||||
#################################################################
|
||||
##different target:
|
||||
##-----------------------------------------------
|
||||
##win platform:
|
||||
##build lib dll + LIB_LIBRARY
|
||||
##build lib lib + LIB_STATIC_LIBRARY
|
||||
##link lib lib + LIB_STATIC_LIBRARY
|
||||
##link lib dll + ~~
|
||||
##- - - - - - - - - - - - - - - - - - - - -
|
||||
##*nix platform:
|
||||
##build and link lib dll or lib + ~~
|
||||
##-----------------------------------------------
|
||||
#link Lib static library in some occation on windows
|
||||
#when link Lib static library, if no this macro, headers can't be linked on windows.
|
||||
#在这里添加了LIB_STATIC_LIBRARY 用户可以使用 还有LIB_LIBRARY
|
||||
contains(QSYS_PRIVATE, Win32|Win64 || iOS|iOSSimulator) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw|ios{
|
||||
#on my computer, Qt library are all static library?
|
||||
DEFINES += LIB_STATIC_LIBRARY
|
||||
message(Build $${TARGET} LIB_STATIC_LIBRARY is defined. build and link)
|
||||
}
|
||||
|
||||
#link and build all need this macro
|
||||
contains(DEFINES, LIB_STATIC_LIBRARY) {
|
||||
}
|
||||
}
|
||||
|
||||
################################################################
|
||||
##build cache (此处为中间目标目录,对用户并不重要)
|
||||
##此处加以干涉,使目录清晰。
|
||||
##此处关于DESTDIR的设置,导致用户必须把这个文件的包含,提前到最前边的位置,才能进行App里的目录操作。
|
||||
##删除干涉?
|
||||
##用户注意:(done in app_base_manager), 首先include(app_link_lib_library.pri),然后做app的工作,和include其他pri,包括LibLib提供的其他pri,保证这个顺序就不会出错了。
|
||||
##对编译目标目录进行干涉管理,显得更加细腻。
|
||||
##用户注意:这里相当于给编译中间目录加了一个自动校准,属于校正范畴。
|
||||
################################################################
|
||||
isEmpty(OBJECTS_DIR):OBJECTS_DIR = obj
|
||||
isEmpty(MOC_DIR):MOC_DIR = obj/moc.cpp
|
||||
isEmpty(UI_DIR):UI_DIR = obj/ui.h
|
||||
isEmpty(RCC_DIR):RCC_DIR = qrc
|
||||
#这样做保持了App工程和LibLib工程中间目录的一致性,但是并不必要。
|
||||
isEmpty(DESTDIR):DESTDIR = bin
|
||||
|
||||
################################################################
|
||||
##Lib Functions Macro
|
||||
################################################################
|
||||
#You need switch these more macro according to your needs when you build this library
|
||||
#You can tailor Lib with these macro.
|
||||
#Default: macroes is configed, some open, some close, compatibled to special accotation.
|
||||
##App希望裁剪LibLib,开关这个文件里的组件宏,用户有必要读懂这个头文件。up to so.
|
||||
|
||||
##################C++11 Module###############################
|
||||
#if you use C++11, open this annotation. suggest: ignore
|
||||
#DEFINES += __CPP11__
|
||||
contains (DEFINES, __CPP11__) {
|
||||
#macOS gcc Qt4.8.7
|
||||
#qobject.h fatal error: 'initializer_list' file not found,
|
||||
#Qt4.8.7 can't support c++11 features
|
||||
#QMAKE_CXXFLAGS += "-std=c++11"
|
||||
#QMAKE_CXXFLAGS += "-std=c++0x"
|
||||
|
||||
#below: gcc version > 4.6.3
|
||||
#Open this Config, Why in Qt4 works? see qmake config auto ignored this feature.
|
||||
#In Qt5? don't need open this config, qmake auto add c++11 support on linux plat.
|
||||
#on windows mingw32? need test
|
||||
#CONFIG += c++11
|
||||
|
||||
#compile period
|
||||
#LibLib need c++11 support. Please ensure your compiler version.
|
||||
#LibLib used override identifier
|
||||
#lambda also need c++11
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##library
|
||||
##################################################################
|
||||
equals (QKIT_PRIVATE, iOSSimulator):{
|
||||
#error need
|
||||
#QMAKE_CXXFLAGS +=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
|
||||
}
|
||||
|
||||
win32 {
|
||||
LIBS += -luser32
|
||||
}else: unix {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
#min macosx target
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
|
||||
#deperated
|
||||
#QMAKE_MAC_SDK=macosx10.12
|
||||
#MACOSXSDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$${QMAKE_MACOSX_DEPLOYMENT_TARGET}.sdk
|
||||
#QMAKE_LIBDIR = $${MACOSXSDK}
|
||||
#LIBS += -F$${MACOSXSDK}/System/Library/Frameworks
|
||||
#LIBS += -L$${MACOSXSDK}/usr/lib
|
||||
LIBS += -framework DiskArbitration -framework Cocoa -framework IOKit
|
||||
}else:contains(QSYS_PRIVATE, iOS|iOSSimulator){
|
||||
QMAKE_LFLAGS += -ObjC -lsqlite3 -lz
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ defineReplace(get_app_deploy_on_android) {
|
||||
##########################################
|
||||
#app发布lib到自己的目标里,必须先发布app,如果没有先发布app会出错。
|
||||
#lib发布lib,没有的事情
|
||||
#解释,从app build目录里拷贝是有原因的,在Creator编译完成后,我把依赖库拷贝过去了,add_link()实现的。
|
||||
#解释,从app build目录里拷贝是有原因的,在Creator编译完成后,我把依赖库拷贝过去了,add_library()实现的。
|
||||
defineReplace(get_app_deploy_lib_on_mac) {
|
||||
#APP_DEPLOY_PWD
|
||||
#APP_DEST_PWD
|
||||
|
@ -1,5 +1,5 @@
|
||||
#-------------------------------------------------------------
|
||||
#add_link.pri
|
||||
#add_library.pri
|
||||
#提供app链接函数,app lib工程通用
|
||||
#-------------------------------------------------------------
|
||||
|
||||
@ -7,11 +7,11 @@
|
||||
#内部用函数
|
||||
#获取命令
|
||||
################################################################################
|
||||
defineReplace(get_add_link) {
|
||||
defineReplace(get_add_library) {
|
||||
libname = $$1
|
||||
librealname = $$2
|
||||
isEmpty(1): error("get_add_link(libname, librealname) requires at last one argument")
|
||||
!isEmpty(3): error("get_add_link(libname, librealname) requires at most two argument")
|
||||
isEmpty(1): error("get_add_library(libname, librealname) requires at last one argument")
|
||||
!isEmpty(3): error("get_add_library(libname, librealname) requires at most two argument")
|
||||
isEmpty(2): librealname = $${libname}
|
||||
|
||||
CUR_LIB_PWD = $${LIB_SDK_ROOT}/$${libname}/$${QSYS_STD_DIR}/lib
|
||||
@ -31,11 +31,11 @@ defineReplace(get_add_link) {
|
||||
return ($${LINK})
|
||||
}
|
||||
|
||||
defineReplace(get_add_include) {
|
||||
defineReplace(get_add_header) {
|
||||
incname = $$1
|
||||
increalname = $$2
|
||||
isEmpty(1): error("get_add_include(incname, increalname) requires at last one argument")
|
||||
!isEmpty(3): error("get_add_include(incname, increalname) requires at most two argument")
|
||||
isEmpty(1): error("get_add_header(incname, increalname) requires at last one argument")
|
||||
!isEmpty(3): error("get_add_header(incname, increalname) requires at most two argument")
|
||||
|
||||
INCLUDE =
|
||||
contains(DEFINES, __DARWIN__) {
|
||||
@ -55,7 +55,6 @@ defineReplace(get_add_include) {
|
||||
return ($${INCLUDE})
|
||||
}
|
||||
|
||||
|
||||
################################################################################
|
||||
#公开给外部用函数
|
||||
#执行命令
|
||||
@ -65,35 +64,65 @@ defineReplace(get_add_include) {
|
||||
#[libname/5.9.2/macOS/Debug/lib/librealname.dll]
|
||||
#[libname/5.9.2/macOS/Debug/lib/lib<librealname>.so.*]
|
||||
#librealname可以为空
|
||||
defineTest(add_link) {
|
||||
defineTest(add_library) {
|
||||
libname = $$1
|
||||
librealname = $$2
|
||||
isEmpty(1): error("add_link(libname, librealname) requires at last one argument")
|
||||
!isEmpty(3): error("add_link(libname, librealname) requires at most two argument")
|
||||
isEmpty(1): error("add_library(libname, librealname) requires at last one argument")
|
||||
!isEmpty(3): error("add_library(libname, librealname) requires at most two argument")
|
||||
isEmpty(2): librealname = $${libname}
|
||||
|
||||
command = $$get_add_link($${libname}, $${librealname})
|
||||
command = $$get_add_library($${libname}, $${librealname})
|
||||
#message ($$command)
|
||||
LIBS += $${command}
|
||||
|
||||
export(LIBS)
|
||||
|
||||
return (1)
|
||||
}
|
||||
|
||||
|
||||
#从LIB_SDK_ROOT按照标准路径QSYS_STD_DIR包含
|
||||
#[incname/5.9.2/macOS/Debug/lib/incname.framework/Headers/increalname]
|
||||
#[incname/5.9.2/macOS/Debug/include/increalname]
|
||||
#increalname可以为空
|
||||
defineTest(add_include) {
|
||||
defineTest(add_header) {
|
||||
incname = $$1
|
||||
increalname = $$2
|
||||
isEmpty(1): error("add_include(incname, increalname) requires at last one argument")
|
||||
!isEmpty(3): error("add_include(incname, increalname) requires at most two argument")
|
||||
isEmpty(1): error("add_header(incname, increalname) requires at last one argument")
|
||||
!isEmpty(3): error("add_header(incname, increalname) requires at most two argument")
|
||||
|
||||
command = $$get_add_include($${incname}, $${increalname})
|
||||
command = $$get_add_header($${incname}, $${increalname})
|
||||
#message ($$command)
|
||||
INCLUDEPATH += $${command}
|
||||
|
||||
export(INCLUDEPATH)
|
||||
|
||||
return (1)
|
||||
}
|
||||
|
||||
#从源代码本地添加头文件
|
||||
defineTest(add_local_header) {
|
||||
incname = $$1
|
||||
isEmpty(1)|!isEmpty(2): error("add_local_header(incname) requires one argument")
|
||||
|
||||
command = $${incname}
|
||||
#message ($$command)
|
||||
|
||||
INCLUDEPATH += $${command}
|
||||
|
||||
export(INCLUDEPATH)
|
||||
|
||||
return (1)
|
||||
}
|
||||
|
||||
defineTest(add_defines) {
|
||||
defname = $$1
|
||||
isEmpty(1)|!isEmpty(2): error("add_defines(defname) requires one argument")
|
||||
|
||||
command = $${defname}
|
||||
#message ($$command)
|
||||
|
||||
DEFINES += $${command}
|
||||
export(DEFINES)
|
||||
|
||||
return (1)
|
||||
}
|
@ -43,7 +43,7 @@ CONFIG(release, debug|profile|release):BUILD=Release
|
||||
|
||||
QSYS_STD_DIR = $${QT_VERSION}/$${QSYS_PRIVATE}/$${BUILD}
|
||||
|
||||
message(app_platform.pri)
|
||||
message(add_platform.pri)
|
||||
message(Build $${TARGET} to $${QSYS_PRIVATE} \(QSYS=$${QSYS_PRIVATE} is configed in project build page.\) )
|
||||
message(Build $${TARGET} at $${QSYS_STD_DIR} \(Qt Kit page FileSystem Name=$${QSYS_PRIVATE}\) )
|
||||
message(Build $${TARGET} on $${QMAKE_HOST.os} \(Operating System=$${QMAKE_HOST.os}\) )
|
||||
|
@ -239,7 +239,7 @@ defineTest(add_sdk){
|
||||
#isEmpty(1):error(add_sdk(libname, libsrcdir, libdstdir) need at last one argument)
|
||||
|
||||
contains(QSYS_PRIVATE, macOS) {
|
||||
equals(APP_MAJOR_VERSION, 0):message(add_sdk(libname, libsrcdir, libdstdir) macos app major version is "0," have you setted it?)
|
||||
#equals(APP_MAJOR_VERSION, 0):message(add_sdk(libname, libsrcdir, libdstdir) macos app major version is "0," have you setted it?)
|
||||
}
|
||||
|
||||
libname = $$TARGET
|
||||
@ -250,12 +250,12 @@ defineTest(add_sdk){
|
||||
|
||||
#编译目标位置
|
||||
LIB_DST_DIR=$$3
|
||||
isEmpty($$3):LIB_DST_DIR = $$DESTDIR
|
||||
isEmpty(3):LIB_DST_DIR = $$DESTDIR
|
||||
|
||||
#create platform sdk need this
|
||||
#源代码目录
|
||||
LIB_SRC_PWD=$$2
|
||||
isEmpty($$2):LIB_SRC_PWD=$${PWD}
|
||||
isEmpty(2):LIB_SRC_PWD=$${PWD}
|
||||
|
||||
#lib major version
|
||||
libmajorver = $$APP_MAJOR_VERSION
|
||||
|
@ -25,7 +25,7 @@ include ($${PWD}/add_deploy.pri)
|
||||
include ($${PWD}/add_deploy_config.pri)
|
||||
|
||||
#app链接所需要的函数
|
||||
include ($${PWD}/add_link.pri)
|
||||
include ($${PWD}/add_library.pri)
|
||||
|
||||
####################################################################################
|
||||
#app base manager 都做了一下这些事情
|
||||
|
@ -49,11 +49,11 @@ defineReplace(get_app_include) {
|
||||
return ($${INCLUDE})
|
||||
}
|
||||
|
||||
defineReplace(get_app_add_link) {
|
||||
defineReplace(get_app_add_library) {
|
||||
libname = $$1
|
||||
lib_real_name = $$2
|
||||
isEmpty(2): error("get_app_add_link(libname, lib_real_name) requires two argument")
|
||||
!isEmpty(3): error("get_app_add_link(libname, lib_real_name) requires two argument")
|
||||
isEmpty(2): error("get_app_add_library(libname, lib_real_name) requires two argument")
|
||||
!isEmpty(3): error("get_app_add_library(libname, lib_real_name) requires two argument")
|
||||
|
||||
CUR_LIB_PWD = $${QQT_SDK_ROOT}/$${libname}/$${QKIT_STD_DIR}/lib
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
@ -71,11 +71,11 @@ defineReplace(get_app_add_link) {
|
||||
return ($${LINK})
|
||||
}
|
||||
|
||||
defineReplace(get_app_add_include) {
|
||||
defineReplace(get_app_add_header) {
|
||||
libname = $$1
|
||||
lib_inc_name = $$2
|
||||
isEmpty(2): error("get_app_add_link(libname, lib_inc_name) requires two argument")
|
||||
!isEmpty(3): error("get_app_add_link(libname, lib_inc_name) requires two argument")
|
||||
isEmpty(2): error("get_app_add_library(libname, lib_inc_name) requires two argument")
|
||||
!isEmpty(3): error("get_app_add_library(libname, lib_inc_name) requires two argument")
|
||||
|
||||
INCLUDE =
|
||||
contains(DEFINES, __DARWIN__) {
|
||||
@ -121,13 +121,13 @@ defineTest(app_include) {
|
||||
}
|
||||
|
||||
#从QQT_SDK_ROOT按照Lib标准路径QKIT_STD_DIR链接Lib2 [libname/5.9.2/macOS/Debug/lib/librealname.framework]
|
||||
defineTest(app_add_link) {
|
||||
defineTest(app_add_library) {
|
||||
libname = $$1
|
||||
lib_real_name = $$1
|
||||
isEmpty(2): error("app_add_link(libname) requires two argument")
|
||||
!isEmpty(3): error("app_add_link(libname) requires two argument")
|
||||
isEmpty(2): error("app_add_library(libname) requires two argument")
|
||||
!isEmpty(3): error("app_add_library(libname) requires two argument")
|
||||
|
||||
command = $$get_app_add_link($${libname}, $${lib_real_name})
|
||||
command = $$get_app_add_library($${libname}, $${lib_real_name})
|
||||
#message ($$command)
|
||||
LIBS += $${command}
|
||||
return (1)
|
||||
@ -135,13 +135,13 @@ defineTest(app_add_link) {
|
||||
|
||||
|
||||
#从QQT_SDK_ROOT按照Lib标准路径QKIT_STD_DIR包含sub_inc [libname/5.9.2/macOS/Debug/lib/libincname.framework/Headers]
|
||||
defineTest(app_add_include) {
|
||||
defineTest(app_add_header) {
|
||||
libname = $$1
|
||||
lib_inc_name = $$2
|
||||
isEmpty(2): error("app_add_include(libname, lib_inc_name) requires two argument")
|
||||
!isEmpty(3): error("app_add_include(libname, lib_inc_name) requires two argument")
|
||||
isEmpty(2): error("app_add_header(libname, lib_inc_name) requires two argument")
|
||||
!isEmpty(3): error("app_add_header(libname, lib_inc_name) requires two argument")
|
||||
|
||||
command = $$get_app_add_include($${libname}, $${lib_inc_name})
|
||||
command = $$get_app_add_header($${libname}, $${lib_inc_name})
|
||||
#message ($$command)
|
||||
INCLUDEPATH += $${command}
|
||||
return (1)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
#app_base_manager.pri
|
||||
#lib_base_manager.pri
|
||||
#应用程序和Library的基础管理器,统一使用这个管理器。
|
||||
#
|
||||
#---------------------------------------------------------------------------------
|
||||
@ -18,179 +18,67 @@ include($${PWD}/add_multi_link_technology.pri)
|
||||
################################################################################
|
||||
#这里的pri提供multi link的全部函数
|
||||
################################################################################
|
||||
#
|
||||
include ($${PWD}/add_base_header.pri)
|
||||
|
||||
#app发布所需要的函数
|
||||
#include ($${PWD}/add_deploy.pri)
|
||||
include ($${PWD}/add_deploy.pri)
|
||||
|
||||
#app发布配置项需要的函数
|
||||
#include ($${PWD}/add_deploy_config.pri)
|
||||
include ($${PWD}/add_deploy_config.pri)
|
||||
|
||||
#链接lib所需要的函数
|
||||
include ($${PWD}/add_link.pri)
|
||||
#链接lib所需要的函数 包含lib头文件所需要的函数 设置lib宏所需要的函数
|
||||
include ($${PWD}/add_library.pri)
|
||||
|
||||
#lib version
|
||||
#program version
|
||||
include ($${PWD}/add_version.pri)
|
||||
|
||||
#lib发布sdk所需要的函数
|
||||
include ($${PWD}/add_sdk.pri)
|
||||
|
||||
####################################################################################
|
||||
#lib base manager 都做了一下这些事情
|
||||
#base manager 都做了一下这些事情
|
||||
####################################################################################
|
||||
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QSYS
|
||||
#################################################################
|
||||
##Qt version
|
||||
QT += core sql network gui xml
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
# release open debug output
|
||||
CONFIG(debug, debug|release) {
|
||||
} else {
|
||||
DEFINES -= QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
#mingw要加速编译,make -j20,-j参数是最好的解决办法。
|
||||
|
||||
#close win32 no using fopen_s warning
|
||||
win32:DEFINES += _CRT_SECURE_NO_WARNINGS #fopen fopen_s
|
||||
|
||||
#msvc支持设置
|
||||
msvc {
|
||||
MSVC_CCFLAGS =
|
||||
#this three pragma cause mingw errors
|
||||
msvc:MSVC_CCFLAGS += /wd"4819" /wd"4244" /wd"4100"
|
||||
|
||||
#UTF8编码
|
||||
DEFINES += __MSVC_UTF8_SUPPORT__
|
||||
msvc:MSVC_CCFLAGS += /execution-charset:utf-8
|
||||
msvc:MSVC_CCFLAGS += /source-charset:utf-8
|
||||
#msvc:MSVC_CCFLAGS += /utf-8 #这一个是快捷方式,顶上边两个。
|
||||
|
||||
#指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程并行编译不同的cpp
|
||||
msvc:MSVC_CCFLAGS += /MP
|
||||
#指出:这个FLAG只能用于MSVC
|
||||
|
||||
msvc:QMAKE_CFLAGS += $${MSVC_CCFLAGS}
|
||||
msvc:QMAKE_CXXFLAGS += $${MSVC_CCFLAGS}
|
||||
|
||||
#指定stable.h这个头文件作为编译预处理文件,MFC里这个文件一般叫stdafx.h 然后在 stable.h里 包含你所用到的所有 Qt 头文件
|
||||
#在.pro 文件中加入一行, 加在这里,加速编译。
|
||||
#msvc:PRECOMPILED_HEADER = $${PWD}/qqt-qt.h
|
||||
#指出:precompiler header只能用于MSVC
|
||||
#这个功能可用,可是编译问题比较多,不方便,所以默认不开开。
|
||||
}
|
||||
|
||||
CONFIG += create_prl
|
||||
#################################################################
|
||||
##build qqt or link qqt
|
||||
#################################################################
|
||||
##different target:
|
||||
##-----------------------------------------------
|
||||
##win platform:
|
||||
##build qqt dll + QQT_LIBRARY
|
||||
##build qqt lib + QQT_STATIC_LIBRARY
|
||||
##link qqt lib + QQT_STATIC_LIBRARY
|
||||
##link qqt dll + ~~
|
||||
##- - - - - - - - - - - - - - - - - - - - -
|
||||
##*nix platform:
|
||||
##build and link qqt dll or lib + ~~
|
||||
##-----------------------------------------------
|
||||
#link QQt static library in some occation on windows
|
||||
#when link QQt static library, if no this macro, headers can't be linked on windows.
|
||||
contains(QSYS_PRIVATE, Win32|Win64 || iOS|iOSSimulator) {
|
||||
##win platform: some target, special lib lib_bundle staticlib
|
||||
##only deal dynamic is ok, static all in headers dealing.
|
||||
##define macro before header.
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw|ios{
|
||||
#on my computer, Qt library are all static library?
|
||||
DEFINES += LIB_STATIC_LIBRARY
|
||||
message(Build $${TARGET} LIB_STATIC_LIBRARY is defined. build and link)
|
||||
mingw {
|
||||
#on my computer , Qt library are all static library?
|
||||
#create static lib (important, only occured at builder pro)
|
||||
CONFIG += staticlib
|
||||
#in qqt_header.pri
|
||||
#DEFINES += QQT_STATIC_LIBRARY
|
||||
} else {
|
||||
#create dynamic lib (important, only occured at builder pro)
|
||||
CONFIG += dll
|
||||
#no other one deal this, define it here, right here.
|
||||
DEFINES += LIB_LIBRARY
|
||||
}
|
||||
|
||||
#link and build all need this macro
|
||||
contains(DEFINES, QQT_STATIC_LIBRARY) {
|
||||
}
|
||||
}
|
||||
|
||||
################################################################
|
||||
##build cache (此处为中间目标目录,对用户并不重要)
|
||||
##此处加以干涉,使目录清晰。
|
||||
##此处关于DESTDIR的设置,导致用户必须把这个文件的包含,提前到最前边的位置,才能进行App里的目录操作。
|
||||
##删除干涉?
|
||||
##用户注意:(done in app_base_manager), 首先include(app_link_qqt_library.pri),然后做app的工作,和include其他pri,包括LibQQt提供的其他pri,保证这个顺序就不会出错了。
|
||||
##对编译目标目录进行干涉管理,显得更加细腻。
|
||||
##用户注意:这里相当于给编译中间目录加了一个自动校准,属于校正范畴。
|
||||
################################################################
|
||||
isEmpty(OBJECTS_DIR):OBJECTS_DIR = obj
|
||||
isEmpty(MOC_DIR):MOC_DIR = obj/moc.cpp
|
||||
isEmpty(UI_DIR):UI_DIR = obj/ui.h
|
||||
isEmpty(RCC_DIR):RCC_DIR = qrc
|
||||
#这样做保持了App工程和LibQQt工程中间目录的一致性,但是并不必要。
|
||||
isEmpty(DESTDIR):DESTDIR = bin
|
||||
|
||||
################################################################
|
||||
##QQt Functions Macro
|
||||
################################################################
|
||||
#You need switch these more macro according to your needs when you build this library
|
||||
#You can tailor QQt with these macro.
|
||||
#Default: macroes is configed, some open, some close, compatibled to special accotation.
|
||||
##App希望裁剪LibQQt,开关这个文件里的组件宏,用户有必要读懂这个头文件。up to so.
|
||||
|
||||
##################C++11 Module###############################
|
||||
#if you use C++11, open this annotation. suggest: ignore
|
||||
#DEFINES += __CPP11__
|
||||
contains (DEFINES, __CPP11__) {
|
||||
#macOS gcc Qt4.8.7
|
||||
#qobject.h fatal error: 'initializer_list' file not found,
|
||||
#Qt4.8.7 can't support c++11 features
|
||||
#QMAKE_CXXFLAGS += "-std=c++11"
|
||||
#QMAKE_CXXFLAGS += "-std=c++0x"
|
||||
|
||||
#below: gcc version > 4.6.3
|
||||
#Open this Config, Why in Qt4 works? see qmake config auto ignored this feature.
|
||||
#In Qt5? don't need open this config, qmake auto add c++11 support on linux plat.
|
||||
#on windows mingw32? need test
|
||||
#CONFIG += c++11
|
||||
|
||||
#compile period
|
||||
#LibQQt need c++11 support. Please ensure your compiler version.
|
||||
#LibQQt used override identifier
|
||||
#lambda also need c++11
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##library
|
||||
##################################################################
|
||||
equals (QKIT_PRIVATE, iOSSimulator):{
|
||||
#error need
|
||||
#QMAKE_CXXFLAGS +=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
|
||||
}
|
||||
|
||||
win32 {
|
||||
LIBS += -luser32
|
||||
}else: unix {
|
||||
#*nux platform: no macro
|
||||
} else {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
#min macosx target
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
|
||||
#deperated
|
||||
#QMAKE_MAC_SDK=macosx10.12
|
||||
#MACOSXSDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$${QMAKE_MACOSX_DEPLOYMENT_TARGET}.sdk
|
||||
#QMAKE_LIBDIR = $${MACOSXSDK}
|
||||
#LIBS += -F$${MACOSXSDK}/System/Library/Frameworks
|
||||
#LIBS += -L$${MACOSXSDK}/usr/lib
|
||||
LIBS += -framework DiskArbitration -framework Cocoa -framework IOKit
|
||||
}else:contains(QSYS_PRIVATE, iOS|iOSSimulator){
|
||||
QMAKE_LFLAGS += -ObjC -lsqlite3 -lz
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8
|
||||
CONFIG += dll
|
||||
CONFIG += lib_bundle
|
||||
} else:contains(QSYS_PRIVATE, iOS|iOSSimulator) {
|
||||
CONFIG += static
|
||||
} else {
|
||||
##default build dll
|
||||
CONFIG += dll
|
||||
#*nix no need this macro
|
||||
#DEFINES += LIB_LIBRARY
|
||||
}
|
||||
}
|
||||
|
||||
#CONFIG += build_pass
|
||||
build_pass:CONFIG(debug, debug|release) {
|
||||
#troublesome
|
||||
#win32: TARGET = $$join(TARGET,,,d)
|
||||
}
|
||||
|
||||
#用户有必要设置APP_VERSION
|
||||
#add_version(1,0,0,0)
|
||||
|
||||
#用户有必要发布SDK 给其他APP用
|
||||
#add_sdk()
|
||||
|
||||
#add_link(QQt)
|
||||
#add_include(QQt)
|
||||
|
@ -35,7 +35,7 @@ if(UNIX)
|
||||
set(SOURCE ${SOURCES} ${DMMUSOURCES})
|
||||
endif(UNIX)
|
||||
|
||||
if(APPLE OR WIN32 OR WINCE)
|
||||
if(APPLE OR Win32 OR WINCE)
|
||||
file(GLOB FILTER "network/qqtethenetmanager.cpp")
|
||||
set(FILTERS ${FILTERS} ${FILTER})
|
||||
file(GLOB FILTER "frame/qqtpreviewwidget.cpp")
|
||||
@ -49,7 +49,7 @@ endif()
|
||||
file(GLOB FILTERS "pluginwatcher/qdevicewatcher_*.cpp")
|
||||
msglist("${FILTERS}")
|
||||
filter_out("${FILTERS}" "${SOURCES}" SOURCES )
|
||||
if(WIN32)
|
||||
if(Win32)
|
||||
set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/pluginwatcher/qdevicewatcher_win32.cpp)
|
||||
elseif(APPLE)
|
||||
set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/pluginwatcher/qdevicewatcher_mac.cpp)
|
||||
@ -57,7 +57,7 @@ elseif(WINCE)
|
||||
set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/pluginwatcher/qdevicewatcher_wince.cpp)
|
||||
elseif(UNIX)
|
||||
set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/pluginwatcher/qdevicewatcher_linux.cpp)
|
||||
endif(WIN32)
|
||||
endif(Win32)
|
||||
|
||||
#内部编译 解决头文件发现不了的问题
|
||||
include_directories( core sql network
|
||||
|
9
src/lib_header.pri
Normal file
9
src/lib_header.pri
Normal file
@ -0,0 +1,9 @@
|
||||
#---------------------------------------------------------------
|
||||
#lib_header.pri
|
||||
#你可以通过这个文件告诉lib用户,这个文件不要修改
|
||||
#---------------------------------------------------------------
|
||||
|
||||
#################################################################
|
||||
##project Headers
|
||||
#################################################################
|
||||
include ($$PWD/qqt_header.pri)
|
@ -39,7 +39,7 @@ typedef struct QQTSHARED_EXPORT tagWifi
|
||||
bool isValid();
|
||||
|
||||
/* only mips32 no use const, arm used
|
||||
* 只有MIPS32不使用const,ARM32使用了。
|
||||
* 只有MIPS32不使用const,Arm32使用了。
|
||||
*/
|
||||
#ifdef __MIPS_LINUX__
|
||||
tagWifi& operator= ( tagWifi& w );
|
||||
|
50
src/qqt.pro
50
src/qqt.pro
@ -23,7 +23,7 @@
|
||||
#please dont modify this pro
|
||||
#use LibQQt you need change Qt Creator default build directory: your-pc-build-station/%{CurrentProject:Name}/%{Qt:Version}/%{CurrentKit:FileSystemName}/%{CurrentBuild:Name}
|
||||
#in Qt kit page, set kit's File System Name. (Creator Ver.>v3.5)
|
||||
#in project build page, def env QKIT
|
||||
#in project build page, def env QSYS
|
||||
#in app_configure.pri (auto createed) define QQT_BUILD_ROOT= and QQT_SDK_ROOT= and or APP_DEPLOY_ROOT
|
||||
|
||||
#################################################################
|
||||
@ -39,30 +39,20 @@ lessThan(QT_VERSION, 4.8.0) {
|
||||
#error( error occured!)
|
||||
}
|
||||
|
||||
################################################
|
||||
##project config and definition
|
||||
##need QKIT to compitible with some occasion
|
||||
################################################
|
||||
include ($$PWD/qqt_qkit.pri)
|
||||
#包含基础管理者
|
||||
include (../multi-link/lib_base_manager.pri)
|
||||
|
||||
|
||||
isEmpty(QKIT_PRIVATE) {
|
||||
isEmpty(QSYS_PRIVATE) {
|
||||
message(1. you should change qt default build directory to your-pc-build-station/%{CurrentProject:Name}/%{Qt:Version}/%{CurrentKit:FileSystemName}/%{CurrentBuild:Name})
|
||||
message(2. env variable QKIT is required! pleace check qqt_qkit.pri)
|
||||
message(2. env variable QSYS is required! pleace check qqt_qkit.pri)
|
||||
error(error occured! please check build output panel.)
|
||||
}
|
||||
|
||||
################################################
|
||||
##project function
|
||||
##support some commonly used function
|
||||
################################################
|
||||
#include ($$PWD/qqt_function.pri)
|
||||
|
||||
|
||||
##win platform: some target, special lib lib_bundle staticlib
|
||||
##only deal dynamic is ok, static all in headers dealing.
|
||||
##define macro before header.
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw {
|
||||
#on my computer , Qt library are all static library?
|
||||
@ -78,10 +68,10 @@ contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
}
|
||||
#*nux platform: no macro
|
||||
} else {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
CONFIG += dll
|
||||
CONFIG += lib_bundle
|
||||
} else:contains(QKIT_PRIVATE, iOS|iOSSimulator) {
|
||||
} else:contains(QSYS_PRIVATE, iOS|iOSSimulator) {
|
||||
CONFIG += static
|
||||
} else {
|
||||
##default build dll
|
||||
@ -112,11 +102,6 @@ QMAKE_CXXFLAGS += $${CCFLAGS}
|
||||
#LibQQt工程里,这个值是不允许改变的,但是再App工程里可以改变。
|
||||
DESTDIR = bin
|
||||
|
||||
#################################################################
|
||||
##project Headers
|
||||
#################################################################
|
||||
include ($$PWD/qqt_header.pri)
|
||||
|
||||
#################################################################
|
||||
##project source
|
||||
#################################################################
|
||||
@ -125,16 +110,16 @@ include ($$PWD/qqt_source.pri)
|
||||
#################################################################
|
||||
##project version
|
||||
#################################################################
|
||||
include ($$PWD/qqt_version.pri)
|
||||
#include ($$PWD/qqt_version.pri)
|
||||
|
||||
#user can use app_version.pri to modify app version once, once is all. DEFINES += APP_VERSION=0.0.0 is very good.
|
||||
unix:VERSION = $${QQT_VERSION}
|
||||
#unix:VERSION = $${QQT_VERSION}
|
||||
#bug?:open this macro, TARGET will suffixed with major version.
|
||||
#win32:VERSION = $${QQT_VERSION4}
|
||||
|
||||
QMAKE_TARGET_FILE = "$${TARGET}"
|
||||
QMAKE_TARGET_PRODUCT = "$${TARGET}"
|
||||
QMAKE_TARGET_COMPANY = "www.qqt.com"
|
||||
QMAKE_TARGET_COMPANY = "www.QQt.com"
|
||||
QMAKE_TARGET_DESCRIPTION = "QQt Foundation Class"
|
||||
QMAKE_TARGET_COPYRIGHT = "Copyright 2017-2022 QQt Co., Ltd. All rights reserved"
|
||||
|
||||
@ -176,6 +161,19 @@ contains(CONFIG, continued_build){
|
||||
system("touch $${PWD}/frame/qqtapplication.cpp")
|
||||
}
|
||||
|
||||
#################################################################
|
||||
##project header
|
||||
##这个作用比较大,lib工程需要,app工程也需要。
|
||||
#################################################################
|
||||
#包含lib的header.pri用于公开给用户头文件。
|
||||
#
|
||||
include (lib_header.pri)
|
||||
|
||||
#设置版本 必要
|
||||
add_version(2,4,0,0)
|
||||
#发布SDK 必要
|
||||
add_sdk($$TARGET, $$PWD, src/$$DESTDIR)
|
||||
|
||||
#################################################################
|
||||
##project environ
|
||||
#################################################################
|
||||
|
@ -6,7 +6,7 @@
|
||||
#注释:在qqt_header.pri打开 DEFINES += __PLUGINSUPPORT__
|
||||
#TODO: macOS runtime crash
|
||||
contains (DEFINES, __PLUGINSUPPORT__) {
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
contains (DEFINES, QQT_LIBRARY) {
|
||||
DEFINES += BUILD_QDEVICEWATCHER_LIB
|
||||
} else: contains (DEFINES, QQT_STATIC_LIBRARY) {
|
||||
@ -14,7 +14,7 @@ contains (DEFINES, __PLUGINSUPPORT__) {
|
||||
}
|
||||
wince*: SOURCES += $$PWD/pluginsupport/devicewatcher/qdevicewatcher_wince.cpp
|
||||
else: SOURCES += $$PWD/pluginsupport/devicewatcher/qdevicewatcher_win32.cpp
|
||||
}else:contains(QKIT_PRIVATE, macOS) {
|
||||
}else:contains(QSYS_PRIVATE, macOS) {
|
||||
SOURCES += $$PWD/pluginsupport/devicewatcher/qdevicewatcher_mac.cpp
|
||||
}else {
|
||||
SOURCES += $$PWD/pluginsupport/devicewatcher/qdevicewatcher_linux.cpp
|
||||
@ -118,7 +118,7 @@ contains (DEFINES, __EXQUISITE__) {
|
||||
#qrdecode widget
|
||||
#注释:在qqt_header.pri打开 DEFINES += __QRDECODE__
|
||||
contains (DEFINES, __QRDECODE__) {
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
#ignore: QZXing has no need to export
|
||||
contains (DEFINES, QQT_LIBRARY) {
|
||||
DEFINES += QZXING_LIBRARY
|
||||
@ -138,7 +138,7 @@ contains (DEFINES, __EXQUISITE__) {
|
||||
#mathml widget
|
||||
#注释:在qqt_header.pri打开 DEFINES += __MATHWIDGETSUPPORT__
|
||||
contains (DEFINES, __MATHWIDGETSUPPORT__) {
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
#mathml
|
||||
contains (DEFINES, QQT_LIBRARY) {
|
||||
DEFINES += QT_QTMMLWIDGET_LIBRARY
|
||||
@ -154,7 +154,7 @@ contains (DEFINES, __EXQUISITE__) {
|
||||
#dmmu support
|
||||
#arm mips
|
||||
#TODO: +wince +android +ios +macOS +win +linux
|
||||
equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
equals(QSYS_PRIVATE, Embedded) {
|
||||
SOURCES += $$PWD/exquisite/dmmu/dmmu.c
|
||||
HEADERS += $$PWD/exquisite/dmmu/dmmu.h \
|
||||
$$PWD/exquisite/dmmu/jz_cim.h \
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QKIT
|
||||
##need QSYS
|
||||
#################################################################
|
||||
|
||||
##Qt version
|
||||
@ -75,7 +75,7 @@ msvc {
|
||||
##-----------------------------------------------
|
||||
#link QQt static library in some occation on windows
|
||||
#when link QQt static library, if no this macro, headers can't be linked on windows.
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64 || iOS|iOSSimulator) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64 || iOS|iOSSimulator) {
|
||||
#Qt is static by mingw32 building
|
||||
mingw|ios{
|
||||
#on my computer, Qt library are all static library?
|
||||
@ -143,7 +143,7 @@ contains (DEFINES, __CPP11__) {
|
||||
##################MultiMedia Module###############################
|
||||
DEFINES += __MULTIMEDIA__
|
||||
#on mac qt4 has no multimedia
|
||||
contains(QKIT_PRIVATE, macOS) {
|
||||
contains(QSYS_PRIVATE, macOS) {
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__MULTIMEDIA__
|
||||
}
|
||||
contains (DEFINES, __MULTIMEDIA__) {
|
||||
@ -155,7 +155,7 @@ contains (DEFINES, __MULTIMEDIA__) {
|
||||
#plugin notifer, and plugin device managament.
|
||||
#if you use DeviceWatcher , open this annotation
|
||||
DEFINES += __PLUGINSUPPORT__
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator||macOS) {
|
||||
contains(QSYS_PRIVATE, iOS||iOSSimulator||macOS) {
|
||||
DEFINES -= __PLUGINSUPPORT__
|
||||
}
|
||||
|
||||
@ -164,13 +164,13 @@ contains(QKIT_PRIVATE, iOS||iOSSimulator||macOS) {
|
||||
DEFINES += __PRINTSUPPORT__
|
||||
#Qt 5.9.1, ios and android can't support this feature, because Qt 5.9.1, broken
|
||||
equals(QT_VERSION, 5.9.1) {
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator||ANDROID||ANDROIDX86) {
|
||||
contains(QSYS_PRIVATE, iOS||iOSSimulator||Android||AndroidX86) {
|
||||
DEFINES -= __PRINTSUPPORT__
|
||||
}
|
||||
}
|
||||
#Qt 5.9.2, android support this feature
|
||||
#Qt 5.9.2, ios can't use printsupport
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator) {
|
||||
contains(QSYS_PRIVATE, iOS||iOSSimulator) {
|
||||
DEFINES -= __PRINTSUPPORT__
|
||||
}
|
||||
contains (DEFINES, __PRINTSUPPORT__) {
|
||||
@ -182,7 +182,7 @@ contains (DEFINES, __PRINTSUPPORT__) {
|
||||
#if you use QQtCharts, open this annotation
|
||||
DEFINES += __QQTCHARTS__
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__QQTCHARTS__
|
||||
contains(QKIT_PRIVATE, ARM32||MIPS32||EMBEDDED):DEFINES-=__QQTCHARTS__
|
||||
contains(QSYS_PRIVATE, Arm32||MIPS32||Embedded):DEFINES-=__QQTCHARTS__
|
||||
#based on QtCharts, need charts module
|
||||
contains(DEFINES, __QQTCHARTS__) {
|
||||
QT += charts
|
||||
@ -257,7 +257,7 @@ contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
#if you use QNetworkAccessManagerSupport , open this annotation
|
||||
DEFINES += __WEBACCESSSUPPORT__
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES -= __WEBACCESSSUPPORT__
|
||||
contains(QKIT_PRIVATE, ARM32||MIPS32||EMBEDDED):DEFINES -= __WEBACCESSSUPPORT__
|
||||
contains(QSYS_PRIVATE, Arm32||MIPS32||Embedded):DEFINES -= __WEBACCESSSUPPORT__
|
||||
contains (DEFINES, __WEBACCESSSUPPORT__) {
|
||||
#QSslError not found, you need recompiler Qt4
|
||||
}
|
||||
@ -275,7 +275,7 @@ contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
#Multi New Protocol 全双工 QWebSocket
|
||||
#if you use QWebSocketSupport , open this annotation
|
||||
DEFINES += __WEBSOCKETSUPPORT__
|
||||
#equals(QKIT_PRIVATE, macOS):DEFINES += __WEBSOCKETSUPPORT__
|
||||
#equals(QSYS_PRIVATE, macOS):DEFINES += __WEBSOCKETSUPPORT__
|
||||
lessThan(QT_MAJOR_VERSION, 5): DEFINES -= __WEBSOCKETSUPPORT__
|
||||
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
||||
QT += websockets
|
||||
@ -319,7 +319,7 @@ contains (DEFINES, __EXQUISITE__) {
|
||||
|
||||
#if you use Svg widgets, open this annotation
|
||||
DEFINES += __SVGWIDGETS__
|
||||
contains(QKIT_PRIVATE, macOS) {
|
||||
contains(QSYS_PRIVATE, macOS) {
|
||||
lessThan(QT_MAJOR_VERSION, 5):DEFINES-=__SVGWIDGETS__
|
||||
}
|
||||
contains (DEFINES, __SVGWIDGETS__) {
|
||||
@ -335,7 +335,7 @@ contains (DEFINES, __EXQUISITE__) {
|
||||
|
||||
#opengl module
|
||||
DEFINES += __OPENGLWIDGETS__
|
||||
contains(QKIT_PRIVATE, MIPS32||ARM32||EMBEDDED):DEFINES-=__OPENGLWIDGETS__
|
||||
contains(QSYS_PRIVATE, MIPS32||Arm32||Embedded):DEFINES-=__OPENGLWIDGETS__
|
||||
contains (DEFINES, __OPENGLWIDGETS__) {
|
||||
QT += opengl
|
||||
}
|
||||
@ -368,7 +368,7 @@ contains (DEFINES, __HIGHGRADE__) {
|
||||
#################################################################
|
||||
##library
|
||||
##################################################################
|
||||
equals (QKIT_PRIVATE, iOSSimulator):{
|
||||
equals (QSYS_PRIVATE, iOSSimulator):{
|
||||
#error need
|
||||
#QMAKE_CXXFLAGS +=-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
|
||||
}
|
||||
@ -379,7 +379,7 @@ win32 {
|
||||
LIBS += -lopengl32 -lglu32
|
||||
}
|
||||
}else: unix {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
#min macosx target
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9
|
||||
#deperated
|
||||
@ -389,7 +389,7 @@ win32 {
|
||||
#LIBS += -F$${MACOSXSDK}/System/Library/Frameworks
|
||||
#LIBS += -L$${MACOSXSDK}/usr/lib
|
||||
LIBS += -framework DiskArbitration -framework Cocoa -framework IOKit
|
||||
}else:contains(QKIT_PRIVATE, iOS|iOSSimulator){
|
||||
}else:contains(QSYS_PRIVATE, iOS|iOSSimulator){
|
||||
QMAKE_LFLAGS += -ObjC -lsqlite3 -lz
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ defineReplace(create_dir_struct) {
|
||||
#if it's qt library, don't create
|
||||
command =
|
||||
!equals(QQT_SDK_PWD , $$[QT_INSTALL_DATA]){
|
||||
!contains(QKIT_PRIVATE, macOS) {
|
||||
!contains(QSYS_PRIVATE, macOS) {
|
||||
command += $$MK_DIR $$QQT_INC_DIR $$CMD_SEP
|
||||
}
|
||||
command += $$MK_DIR $$QQT_LIB_DIR $$CMD_SEP
|
||||
@ -103,18 +103,18 @@ defineReplace(create_qt_lib_pri){
|
||||
command += echo "QT.$${module_name}.VERSION = $${QQT_VERSION}" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.name = $${MODULE_NAME}" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.module = $${MODULE_NAME}" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
command += echo "QT.$${module_name}.libs = \$$QT_MODULE_LIB_BASE" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.bins = \$$QT_MODULE_BIN_BASE" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
} else {
|
||||
command += echo "QT.$${module_name}.libs = '\$$QT_MODULE_LIB_BASE'" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.bins = '\$$QT_MODULE_BIN_BASE'" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
}
|
||||
contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
command += echo "QT.$${module_name}.includes = \$$QT_MODULE_INCLUDE_BASE \$$QT_MODULE_INCLUDE_BASE/$${MODULE_NAME}" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.frameworks = " >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.module_config = v2 " >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
}else:equals(QKIT_PRIVATE, macOS) {
|
||||
}else:equals(QSYS_PRIVATE, macOS) {
|
||||
command += echo "QT.$${module_name}.includes = '\$$QT_MODULE_LIB_BASE/$${MODULE_NAME}.framework/Headers'" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.frameworks = '\$$QT_MODULE_LIB_BASE'" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
command += echo "QT.$${module_name}.module_config = v2 lib_bundle" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
|
||||
@ -149,13 +149,13 @@ defineReplace(create_library_sdk){
|
||||
|
||||
#这里不是目标为Windows才拷贝,而是开发机是Windows就得这么拷贝。
|
||||
#Windows下,Win目标、Android目标都走这里。
|
||||
#contains(QKIT_PRIVATE, WIN32|WIN64) {
|
||||
#contains(QSYS_PRIVATE, Win32|Win64) {
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
#message(create QQt windows struct library)
|
||||
command += $$create_windows_sdk() $$CMD_SEP
|
||||
command += $$COPY $${QQT_BUILD_PWD}\\*.prl lib $$CMD_SEP
|
||||
} else {
|
||||
contains(QKIT_PRIVATE, macOS) {
|
||||
contains(QSYS_PRIVATE, macOS) {
|
||||
#message(create QQt mac bundle framework)
|
||||
command += $$MK_DIR lib/$${MODULE_NAME}.framework $$CMD_SEP
|
||||
command += $$CD lib/$${MODULE_NAME}.framework $$CMD_SEP
|
||||
@ -194,7 +194,7 @@ defineReplace(create_qqt_sdk){
|
||||
|
||||
#不仅仅发布目标为Windows的时候需要改变,
|
||||
#开发Host是Windows的时候都要改变。路径问题是两种操作系统固有的痛。
|
||||
#contains(QKIT_PRIVATE, WIN32||WIN64) {
|
||||
#contains(QSYS_PRIVATE, Win32||Win64) {
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
#on windows every path must use \ sep.
|
||||
QQT_SRC_PWD~=s,/,\\,g
|
||||
|
@ -127,7 +127,7 @@ module_name = $$lower($${MODULE_NAME})
|
||||
|
||||
#-------define the all path
|
||||
#QQT std dir is not same to app std dir
|
||||
QQT_STD_DIR = QQt/$${QKIT_STD_DIR}
|
||||
QQT_STD_DIR = QQt/$${QSYS_STD_DIR}
|
||||
#link from build need this, if you havent mod QQt.pro, this can only be two value, qqt's: [src]/$DESTDIR
|
||||
QQT_DST_DIR = src/bin
|
||||
#create platform sdk need this
|
||||
@ -147,13 +147,13 @@ contains(CONFIG, link_from_sdk) {
|
||||
|
||||
#这里不仅仅目标为windows的时候,才会转换,
|
||||
#开发Host为Windows的时候,都要转换。
|
||||
#contains(QKIT_PRIVATE, WIN32||WIN64) {
|
||||
#contains(QSYS_PRIVATE, Win32||Win64) {
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QQT_BUILD_ROOT~=s,/,\\,g
|
||||
QQT_SDK_ROOT~=s,/,\\,g
|
||||
APP_DEPLOY_ROOT~=s,/,\\,g
|
||||
|
||||
QKIT_STD_DIR~=s,/,\\,g
|
||||
QSYS_STD_DIR~=s,/,\\,g
|
||||
QQT_STD_DIR~=s,/,\\,g
|
||||
QQT_DST_DIR~=s,/,\\,g
|
||||
QQT_BUILD_PWD~=s,/,\\,g
|
||||
@ -166,7 +166,7 @@ contains(CONFIG, link_from_sdk) {
|
||||
#create sdk first
|
||||
QMAKE_PRE_LINK += $$create_qqt_sdk()
|
||||
#private struct
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
#Fix app里、lib里的路径问题
|
||||
#
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
@ -174,14 +174,14 @@ contains(CONFIG, link_from_sdk) {
|
||||
}
|
||||
}
|
||||
} else : contains(CONFIG, link_from_build) {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
equals(QSYS_PRIVATE, macOS) {
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
QMAKE_POST_LINK += $$fix_app_bundle_with_qqt_in_building_path_on_mac()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#这个地方的判断方式有两种,使用QKIT_PRIVATE也可以。
|
||||
#这个地方的判断方式有两种,使用QSYS_PRIVATE也可以。
|
||||
#是不是只有armeabi-v7a需要这个extra?
|
||||
contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
|
||||
ANDROID_EXTRA_LIBS = \
|
||||
@ -192,8 +192,8 @@ contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
|
||||
LIBS += $$link_qqt_library()
|
||||
|
||||
message (Link QQt from: $${QQT_LIB_PWD})
|
||||
message(Link QQt to $${TARGET} $${QKIT_PRIVATE} on $${QMAKE_HOST.os} \
|
||||
message(Link QQt to $${TARGET} $${QSYS_PRIVATE} on $${QMAKE_HOST.os} \
|
||||
\(Qt Kit page FileSystem Name=$${SYSNAME}. Operating System=$${QMAKE_HOST.os}.\) )
|
||||
#TARGET must be equals to pro name ? no, TARGET must be placeed before qqt_library.pri
|
||||
#qmake pro pri is sequential
|
||||
message(Build $${TARGET} at $${OUT_PWD}/$${QKIT_STD_DIR})
|
||||
message(Build $${TARGET} at $${OUT_PWD}/$${QSYS_STD_DIR})
|
||||
|
@ -1,11 +1,11 @@
|
||||
#this configration need Qt Creator set default build directory
|
||||
#%{CurrentProject:Name}/%{Qt:Version}/%{CurrentKit:FileSystemName}/%{CurrentBuild:Name}")}
|
||||
|
||||
#这里暂时使用QKIT - FileSystemName这样的决定格式。
|
||||
#这里暂时使用QSYS - FileSystemName这样的决定格式。
|
||||
#如果QtCreator把编译器名称、FileSystemName传递过来就好了。
|
||||
#或者QtCreator把Qt SDK目录名传过来也好。
|
||||
#或者QtCreator自动生成QKIT描述符、FileSystemName,并且传递过来,也好。
|
||||
#哎,但是现在没有,无奈之下,用户设定QKIT。
|
||||
#或者QtCreator自动生成QSYS描述符、FileSystemName,并且传递过来,也好。
|
||||
#哎,但是现在没有,无奈之下,用户设定QSYS。
|
||||
|
||||
#FileSystemName的终极状态是编译器_目标系统名,比如gcc_macOS, clang_macOS这样。
|
||||
|
||||
@ -17,10 +17,10 @@
|
||||
|
||||
#原理
|
||||
#Qt Creator kit页的FileSystemName Creator自己用,忘记了传给qmake.(存储于Qt Creator配置区域)
|
||||
#工程构建和配置页(存储于.pro.userxxx)里的环境变量QKIT给qmake用.
|
||||
#工程构建和配置页(存储于.pro.userxxx)里的环境变量QSYS给qmake用.
|
||||
#如果用户在pro里面设置QMAKE.KIT QMAKE.SYSNAME,Qt Creator从qmake里读也挺好的.
|
||||
|
||||
#You need define a env variable QKIT=XX
|
||||
#You need define a env variable QSYS=XX
|
||||
#target arch type
|
||||
#注释
|
||||
#config += xxx qmake用配置开关
|
||||
@ -29,48 +29,48 @@
|
||||
#XXX = AAA 给qmake用变量XXX赋值
|
||||
#DEFINES += XXX 源代码用宏 和上边的XXX可以重名,但是是两回事,不干扰.
|
||||
|
||||
QKIT_PRIVATE = $$(QKIT)
|
||||
QSYS_PRIVATE = $$(QSYS)
|
||||
#源文件内平台小差异
|
||||
#QKIT -> 源文件宏
|
||||
#EMBEDDED __EMBEDDED_LINUX__
|
||||
#QSYS -> 源文件宏
|
||||
#Embedded __EMBEDDED_LINUX__
|
||||
#MIPS __MIPS_LINUX__
|
||||
#ARM __ARM_LINUX__
|
||||
#LINUX __LINUX__
|
||||
#Linux __LINUX__
|
||||
#LINUX64 __LINUX64__
|
||||
#WIN32 __WIN32__
|
||||
#WIN64 __WIN64__
|
||||
#Win32 __WIN32__
|
||||
#Win64 __WIN64__
|
||||
#macOS __DARWIN__
|
||||
#ANDROID __ANDROID__
|
||||
#ANDROIDX86 __ANDROIDX86__
|
||||
equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
#Android __ANDROID__
|
||||
#AndroidX86 __ANDROIDX86__
|
||||
equals(QSYS_PRIVATE, Embedded) {
|
||||
#embedded common macro
|
||||
DEFINES += __EMBEDDED_LINUX__
|
||||
} else:equals(QKIT_PRIVATE, ARM32) {
|
||||
} else:equals(QSYS_PRIVATE, Arm32) {
|
||||
DEFINES += __EMBEDDED_LINUX__
|
||||
#arm32 private
|
||||
DEFINES += __ARM_LINUX__
|
||||
} else:equals(QKIT_PRIVATE, MIPS32) {
|
||||
} else:equals(QSYS_PRIVATE, MIPS32) {
|
||||
DEFINES += __EMBEDDED_LINUX__
|
||||
#mips32 private
|
||||
DEFINES += __MIPS_LINUX__
|
||||
} else:equals(QKIT_PRIVATE, LINUX) {
|
||||
} else:equals(QSYS_PRIVATE, Linux) {
|
||||
DEFINES += __LINUX__
|
||||
} else:equals(QKIT_PRIVATE, LINUX64) {
|
||||
} else:equals(QSYS_PRIVATE, LINUX64) {
|
||||
DEFINES += __LINUX64__
|
||||
} else:equals(QKIT_PRIVATE, WIN32) {
|
||||
} else:equals(QSYS_PRIVATE, Win32) {
|
||||
DEFINES += __WIN32__
|
||||
} else:equals(QKIT_PRIVATE, WIN64) {
|
||||
} else:equals(QSYS_PRIVATE, Win64) {
|
||||
DEFINES += __WIN64__
|
||||
} else:equals(QKIT_PRIVATE, macOS) {
|
||||
} else:equals(QSYS_PRIVATE, macOS) {
|
||||
DEFINES += __DARWIN__
|
||||
} else:equals(QKIT_PRIVATE, iOS) {
|
||||
} else:equals(QSYS_PRIVATE, iOS) {
|
||||
DEFINES += __IOS__
|
||||
} else:equals(QKIT_PRIVATE, iOSSimulator) {
|
||||
} else:equals(QSYS_PRIVATE, iOSSimulator) {
|
||||
DEFINES += __IOS__
|
||||
#TODO:no qcustomplot word printer process
|
||||
} else:equals(QKIT_PRIVATE, ANDROID) {
|
||||
} else:equals(QSYS_PRIVATE, Android) {
|
||||
DEFINES += __ANDROID__
|
||||
} else:equals(QKIT_PRIVATE, ANDROIDX86) {
|
||||
} else:equals(QSYS_PRIVATE, AndroidX86) {
|
||||
DEFINES += __ANDROID__
|
||||
DEFINES += __ANDROIDX86__ #可能废弃
|
||||
}
|
||||
@ -80,7 +80,7 @@ equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
#QMAKESPECS = $${QMAKESPEC}
|
||||
#QMAKESPECS ~= s:/[^/]*$::p
|
||||
#message (used spec: $$QMAKESPEC_NAME at here: $$QMAKESPECS )
|
||||
#equals(QMAKESPEC_NAME, EMBEDDED) {
|
||||
#equals(QMAKESPEC_NAME, Embedded) {
|
||||
# #embedded common macro
|
||||
# DEFINES += __EMBEDDED_LINUX__
|
||||
#} else:equals(QMAKESPEC_NAME, *arm*) {
|
||||
@ -108,7 +108,7 @@ equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
# DEFINES += __DARWIN__
|
||||
#} else:equals(QMAKESPEC_NAME, android-*) {
|
||||
# DEFINES += __ANDROID__
|
||||
#} else:equals(QMAKESPEC_NAME, ANDROIDX86) {
|
||||
#} else:equals(QMAKESPEC_NAME, AndroidX86) {
|
||||
# DEFINES += __ANDROID__
|
||||
# #todo:no qcustomplot word printer
|
||||
#}
|
||||
@ -119,44 +119,44 @@ equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
CONFIG(debug, debug|profile|release):BUILD=Debug
|
||||
CONFIG(profile, debug|profile|release):BUILD=Profile
|
||||
CONFIG(release, debug|profile|release):BUILD=Release
|
||||
equals(QKIT_PRIVATE, EMBEDDED) {
|
||||
equals(QSYS_PRIVATE, Embedded) {
|
||||
SYSNAME = Embedded
|
||||
} else:equals(QKIT_PRIVATE, ARM32) {
|
||||
} else:equals(QSYS_PRIVATE, Arm32) {
|
||||
SYSNAME = Arm32
|
||||
} else:equals(QKIT_PRIVATE, MIPS32) {
|
||||
} else:equals(QSYS_PRIVATE, MIPS32) {
|
||||
SYSNAME = Mips32
|
||||
} else:equals(QKIT_PRIVATE, LINUX) {
|
||||
} else:equals(QSYS_PRIVATE, Linux) {
|
||||
SYSNAME = Linux
|
||||
} else:equals(QKIT_PRIVATE, LINUX64) {
|
||||
} else:equals(QSYS_PRIVATE, LINUX64) {
|
||||
SYSNAME = Linux64
|
||||
} else:equals(QKIT_PRIVATE, WIN32) {
|
||||
} else:equals(QSYS_PRIVATE, Win32) {
|
||||
SYSNAME = Windows
|
||||
} else:equals(QKIT_PRIVATE, WIN64) {
|
||||
} else:equals(QSYS_PRIVATE, Win64) {
|
||||
SYSNAME = Win64
|
||||
} else:equals(QKIT_PRIVATE, macOS) {
|
||||
} else:equals(QSYS_PRIVATE, macOS) {
|
||||
SYSNAME = MacOS
|
||||
} else:equals(QKIT_PRIVATE, iOS) {
|
||||
} else:equals(QSYS_PRIVATE, iOS) {
|
||||
SYSNAME = iOS
|
||||
} else:equals(QKIT_PRIVATE, iOSSimulator) {
|
||||
} else:equals(QSYS_PRIVATE, iOSSimulator) {
|
||||
SYSNAME = iOS-simulator
|
||||
} else:equals(QKIT_PRIVATE, ANDROID) {
|
||||
} else:equals(QSYS_PRIVATE, Android) {
|
||||
SYSNAME = Android
|
||||
} else:equals(QKIT_PRIVATE, ANDROIDX86) {
|
||||
} else:equals(QSYS_PRIVATE, AndroidX86) {
|
||||
SYSNAME = Android_x86
|
||||
}
|
||||
|
||||
#if you dont modify Qt Creator default build directory, you may need mod this path variable.
|
||||
#link operation all will need this variable
|
||||
QKIT_STD_DIR = $${QT_VERSION}/$${SYSNAME}/$${BUILD}
|
||||
QSYS_STD_DIR = $${QT_VERSION}/$${SYSNAME}/$${BUILD}
|
||||
|
||||
message(qqt_qkit.pri)
|
||||
message(Build $${TARGET} to $${QKIT_PRIVATE} \(QKIT=$${QKIT_PRIVATE} is configed in project build page.\) )
|
||||
message(Build $${TARGET} at $${QKIT_STD_DIR} \(Qt Kit page FileSystem Name=$${SYSNAME}\) )
|
||||
message(Build $${TARGET} to $${QSYS_PRIVATE} \(QSYS=$${QSYS_PRIVATE} is configed in project build page.\) )
|
||||
message(Build $${TARGET} at $${QSYS_STD_DIR} \(Qt Kit page FileSystem Name=$${SYSNAME}\) )
|
||||
message(Build $${TARGET} on $${QMAKE_HOST.os} \(Operating System=$${QMAKE_HOST.os}\) )
|
||||
isEmpty(QKIT_PRIVATE) : message(Build $${TARGET} Qt Kit page FileSystem Name is decided by env variable QKIT. Please set it. )
|
||||
isEmpty(QSYS_PRIVATE) : message(Build $${TARGET} Qt Kit page FileSystem Name is decided by env variable QSYS. Please set it. )
|
||||
|
||||
isEmpty(QKIT_PRIVATE) {
|
||||
message(env variable QKIT is required!)
|
||||
isEmpty(QSYS_PRIVATE) {
|
||||
message(env variable QSYS is required!)
|
||||
message(pleace check qqt_qkit.pri)
|
||||
error("error occured, please check build output panel.")
|
||||
}
|
||||
|
@ -19,13 +19,13 @@ HEADERS += $$PWD/qqt.h \
|
||||
$$PWD/qqtversion.h \
|
||||
$$PWD/qqt-qt.h
|
||||
#platform header
|
||||
contains (QKIT_PRIVATE, WIN32||WIN64) {
|
||||
contains (QSYS_PRIVATE, Win32||Win64) {
|
||||
#win32 base header
|
||||
HEADERS += $$PWD/qqtwin.h
|
||||
} else:contains (QKIT_PRIVATE, macOS||iOS||iOSSimulator) {
|
||||
} else:contains (QSYS_PRIVATE, macOS||iOS||iOSSimulator) {
|
||||
#mac base header
|
||||
HEADERS += $$PWD/qqtdarwin.h
|
||||
} else:contains (QKIT_PRIVATE, ANDROID||ANDROIDX86) {
|
||||
} else:contains (QSYS_PRIVATE, Android||AndroidX86) {
|
||||
#android base header
|
||||
HEADERS += $$PWD/qqtandroid.h
|
||||
} else {
|
||||
@ -48,7 +48,7 @@ HEADERS += \
|
||||
#后台进程支持,这个只有ios不支持,这个支持在源文件pri里处理。
|
||||
DEFINES += __PROCESSMODULE__
|
||||
#ios has no backend process
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator) {
|
||||
contains(QSYS_PRIVATE, iOS||iOSSimulator) {
|
||||
DEFINES -= __PROCESSMODULE__
|
||||
}
|
||||
|
||||
@ -301,7 +301,7 @@ contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
#ethnet(+wifi) manager
|
||||
#arm mips
|
||||
#TODO: +wince +android +ios +macOS? +win? +linux?
|
||||
contains(QKIT_PRIVATE, EMBEDDED||ARM32||MIPS32) {
|
||||
contains(QSYS_PRIVATE, Embedded||Arm32||MIPS32) {
|
||||
SOURCES += $$PWD/network/qqtethenetmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtethenetmanager.h
|
||||
SOURCES += $$PWD/frame/qqtwifiwidget.cpp
|
||||
|
@ -44,14 +44,14 @@ unix {
|
||||
|
||||
#touch 启动post link
|
||||
system(touch qqtbasedlibtest.cpp)
|
||||
#包含基础管理者
|
||||
include (../../multi-link/lib_base_manager.pri)
|
||||
|
||||
contains(QSYS_PRIVATE, macOS){
|
||||
CONFIG += lib_bundle
|
||||
}
|
||||
#包含基础管理者
|
||||
include (../../multi-link/add_base_manager.pri)
|
||||
|
||||
#设置版本 必要
|
||||
add_version(1,0,0,0)
|
||||
#发布SDK 必要
|
||||
add_sdk()
|
||||
|
||||
#包含lib的header.pri用于公开给用户头文件。
|
||||
include (lib_header.pri)
|
||||
|
26
test/QQtBasedLibTest/lib_header.pri
Normal file
26
test/QQtBasedLibTest/lib_header.pri
Normal file
@ -0,0 +1,26 @@
|
||||
#---------------------------------------------------------------
|
||||
#lib_header.pri
|
||||
#你可以通过这个文件告诉lib用户,这个文件不要修改
|
||||
#---------------------------------------------------------------
|
||||
|
||||
#################################################################
|
||||
##definition and configration
|
||||
##need QSYS
|
||||
#################################################################
|
||||
|
||||
##################################################################
|
||||
##include directories
|
||||
##################################################################
|
||||
defineReplace(lib_header){
|
||||
path = $$1
|
||||
!isEmpty(2) : error("lib_header(path) requires one arguments.")
|
||||
isEmpty(1) : error("lib_header(path) requires one arguments.")
|
||||
|
||||
#basic
|
||||
command += $${path}
|
||||
|
||||
return ($$command)
|
||||
}
|
||||
|
||||
add_local_header( $$lib_header($$PWD) )
|
||||
message($$INCLUDEPATH)
|
199
test/QQtBasedLibTest/lib_library.pri
Normal file
199
test/QQtBasedLibTest/lib_library.pri
Normal file
@ -0,0 +1,199 @@
|
||||
################################################
|
||||
##qqt_library.pri, linking workflow
|
||||
##QQt based app please include this pri to link qqt library
|
||||
##dependence qqt_version.pri qqt_header.pri
|
||||
##从SDK ROOT链接QQt Library
|
||||
##don't modify this pri file, if you catch any issure, please make issure
|
||||
##https://gitee.com/drabel/LibQt/issues/new?issue%5Bassignee_id%5D=0&issue%5Bmilestone_id%5D=0
|
||||
##2017年10月29日08:54:28
|
||||
################################################
|
||||
|
||||
################################################
|
||||
##link QQt logic function
|
||||
################################################
|
||||
defineReplace(link_qqt_library) {
|
||||
contains(DEFINES, __DARWIN__) {
|
||||
LINK += -F$${QQT_LIB_PWD}
|
||||
LINK += -framework QQt
|
||||
} else {
|
||||
LINK += -L$${QQT_LIB_PWD}
|
||||
#win can't with the blank! error: -l QQt
|
||||
LINK += -lQQt
|
||||
}
|
||||
return ($${LINK})
|
||||
}
|
||||
|
||||
#在Mac上,Creator运行app前必须拷贝依赖,是个deploy过程。
|
||||
#Mac不用于其他操作系统,对于bundle,任何运行时刻都需要拷贝依赖,包括build完成后。
|
||||
#build path里的app bundle和deploy root里的app bundle要运行都必须拷贝好QQt,这是macOS特有的。
|
||||
#这个函数可以修正任何位置的app bundle
|
||||
#在链接QQt的时候,也就是这里 修正app bundle有利于统一app deploy过程。app_deploy没有做这个工作,和其他平台相近似。
|
||||
defineReplace(deploy_qqt_to_app_deploy_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
deploy_path = $$1
|
||||
isEmpty(1): error("deploy_qqt_to_app_deploy_path_on_mac(deploy_path) requires one argument")
|
||||
create_command = $$create_mac_sdk()
|
||||
APP_DEST_DIR=$${deploy_path}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command =
|
||||
command += chmod +x $${PWD}/linux_cur_path.sh &&
|
||||
command += . $${PWD}/linux_cur_path.sh &&
|
||||
command += rm -rf $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
#拷贝QQt.framework到app bundle里。其实,是直接在app里执行的。这个会移动走。
|
||||
command += mkdir -p $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += cd $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
#修复QQt.framework里的快捷方式
|
||||
command += $${create_command} &&
|
||||
command += chmod +x $${PWD}/linux_cd_path.sh &&
|
||||
command += . $${PWD}/linux_cd_path.sh &&
|
||||
|
||||
#Qt Creator create framework but use absolute path to make link
|
||||
#QMAKE_POST_LINK += cp -rf $${QQT_LIB_PWD}/QQt.framework \
|
||||
# $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks &&
|
||||
#更改app bundle链接QQt的位置。
|
||||
command += install_name_tool -change QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
@rpath/QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
$${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
|
||||
command += macdeployqt $${APP_DEST_DIR}/$${TARGET}.app -verbose=1
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 5){
|
||||
command += &&
|
||||
command += chmod +x $${PWD}/mac_deploy_qt4.sh &&
|
||||
command += $${PWD}/mac_deploy_qt4.sh $${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}
|
||||
}
|
||||
#message($$command)
|
||||
return ($${command})
|
||||
}
|
||||
|
||||
#这个macOS POST LINK其实是因为qmake的一个bug而添加的,qmake生成的framework结构有错误,里边的快捷方式都不对,所以在此修正。
|
||||
#这个只是bug1,还有bug2.
|
||||
#Creator在运行app之前,如果不把这些依赖拷贝到中间目标生成目录里,就不能运行。这是macOS特有的,别的系统都不需要。所以这个修正发生在
|
||||
#这个是bug2,还有bug3
|
||||
#qmake在苹果下生成的app,默认链接QQt的位置是绝对路径!这里修复为相对路径。拷贝过去也失去了相对路径。
|
||||
#好了,经过以上修复,app可以直接使用了。
|
||||
defineReplace(fix_app_bundle_with_qqt_in_building_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
APP_DEST_DIR=$${DESTDIR}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command = $$deploy_qqt_to_app_deploy_path_on_mac($${APP_DEST_DIR})
|
||||
return ($$command)
|
||||
}
|
||||
|
||||
#这个函数用于Lib链接QQt的时候对Lib的针对qmake生成bundle的bug的修正,
|
||||
#把生成的lib的ln绝对路径更换为相对路径
|
||||
#这个事情发生在build station里,Creator要运行这个里边需要依赖这个工作。
|
||||
#multi link需要发布这个lib也需要依赖这个工作。
|
||||
#必经之路。
|
||||
defineReplace(fix_lib_in_building_path_on_mac) {
|
||||
#need QQT_BUILD_PWD
|
||||
deploy_path = $$1
|
||||
isEmpty(1): error("fix_lib_in_building_path_on_mac(deploy_path) requires one argument")
|
||||
create_command = $$create_mac_sdk()
|
||||
APP_DEST_DIR=$${deploy_path}
|
||||
isEmpty(APP_DEST_DIR):APP_DEST_DIR=.
|
||||
command =
|
||||
command += chmod +x $${PWD}/linux_cur_path.sh &&
|
||||
command += . $${PWD}/linux_cur_path.sh &&
|
||||
command += rm -rf $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += mkdir -p $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += cd $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks/QQt.framework &&
|
||||
command += $${create_command} &&
|
||||
command += chmod +x $${PWD}/linux_cd_path.sh &&
|
||||
command += . $${PWD}/linux_cd_path.sh &&
|
||||
|
||||
#Qt Creator create framework but use absolute path to make link
|
||||
#QMAKE_POST_LINK += cp -rf $${QQT_LIB_PWD}/QQt.framework \
|
||||
# $${APP_DEST_DIR}/$${TARGET}.app/Contents/Frameworks &&
|
||||
command += install_name_tool -change QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
@rpath/QQt.framework/Versions/$${QQT_MAJOR_VERSION}/QQt \
|
||||
$${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
|
||||
command += macdeployqt $${APP_DEST_DIR}/$${TARGET}.app -verbose=1
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 5){
|
||||
command += &&
|
||||
command += chmod +x $${PWD}/mac_deploy_qt4.sh &&
|
||||
command += $${PWD}/mac_deploy_qt4.sh $${APP_DEST_DIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}
|
||||
}
|
||||
#message($$command)
|
||||
return ($${command})
|
||||
}
|
||||
|
||||
################################################
|
||||
##link qqt work flow
|
||||
################################################
|
||||
#-------module name QQt
|
||||
MODULE_NAME=QQt
|
||||
module_name = $$lower($${MODULE_NAME})
|
||||
|
||||
#-------define the all path
|
||||
#QQT std dir is not same to app std dir
|
||||
QQT_STD_DIR = QQt/$${QKIT_STD_DIR}
|
||||
#link from build need this, if you havent mod QQt.pro, this can only be two value, qqt's: [src]/$DESTDIR
|
||||
QQT_DST_DIR = src/bin
|
||||
#create platform sdk need this
|
||||
QQT_SRC_PWD=$${PWD}
|
||||
|
||||
#need use qqt subdir proj
|
||||
QQT_BUILD_PWD=$${QQT_BUILD_ROOT}/$${QQT_STD_DIR}/$${QQT_DST_DIR}
|
||||
#sdk path
|
||||
QQT_SDK_PWD = $${QQT_SDK_ROOT}/$${QQT_STD_DIR}
|
||||
#message(QQt sdk install here:$${QQT_SDK_PWD})
|
||||
|
||||
contains(CONFIG, link_from_sdk) {
|
||||
QQT_LIB_PWD = $${QQT_SDK_ROOT}/$${QQT_STD_DIR}/lib
|
||||
} else: contains(CONFIG, link_from_build) {
|
||||
QQT_LIB_PWD = $${QQT_BUILD_ROOT}/$${QQT_STD_DIR}/$${QQT_DST_DIR}
|
||||
}
|
||||
|
||||
#这里不仅仅目标为windows的时候,才会转换,
|
||||
#开发Host为Windows的时候,都要转换。
|
||||
#contains(QKIT_PRIVATE, WIN32||WIN64) {
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QQT_BUILD_ROOT~=s,/,\\,g
|
||||
QQT_SDK_ROOT~=s,/,\\,g
|
||||
APP_DEPLOY_ROOT~=s,/,\\,g
|
||||
|
||||
QKIT_STD_DIR~=s,/,\\,g
|
||||
QQT_STD_DIR~=s,/,\\,g
|
||||
QQT_DST_DIR~=s,/,\\,g
|
||||
QQT_BUILD_PWD~=s,/,\\,g
|
||||
QQT_SDK_PWD~=s,/,\\,g
|
||||
QQT_LIB_PWD~=s,/,\\,g
|
||||
}
|
||||
|
||||
#我准备把install qqt sdk移动到更合适的地方。
|
||||
contains(CONFIG, link_from_sdk) {
|
||||
#create sdk first
|
||||
QMAKE_PRE_LINK += $$create_qqt_sdk()
|
||||
#private struct
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
#Fix app里、lib里的路径问题
|
||||
#
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
QMAKE_POST_LINK += $$fix_app_bundle_with_qqt_in_building_path_on_mac()
|
||||
}
|
||||
}
|
||||
} else : contains(CONFIG, link_from_build) {
|
||||
equals(QKIT_PRIVATE, macOS) {
|
||||
contains(CONFIG, app_bundle) : !contains(CONFIG, lib_bundle) {
|
||||
QMAKE_POST_LINK += $$fix_app_bundle_with_qqt_in_building_path_on_mac()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#这个地方的判断方式有两种,使用QKIT_PRIVATE也可以。
|
||||
#是不是只有armeabi-v7a需要这个extra?
|
||||
contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
|
||||
ANDROID_EXTRA_LIBS = \
|
||||
$${QQT_LIB_PWD}/lib$${MODULE_NAME}.so
|
||||
}
|
||||
|
||||
#从SDK里链接QQt
|
||||
LIBS += $$link_qqt_library()
|
||||
|
||||
message (Link QQt from: $${QQT_LIB_PWD})
|
||||
message(Link QQt to $${TARGET} $${QKIT_PRIVATE} on $${QMAKE_HOST.os} \
|
||||
\(Qt Kit page FileSystem Name=$${SYSNAME}. Operating System=$${QMAKE_HOST.os}.\) )
|
||||
#TARGET must be equals to pro name ? no, TARGET must be placeed before qqt_library.pri
|
||||
#qmake pro pri is sequential
|
||||
message(Build $${TARGET} at $${OUT_PWD}/$${QKIT_STD_DIR})
|
516
test/QQtBasedLibTest/lib_source.pri
Normal file
516
test/QQtBasedLibTest/lib_source.pri
Normal file
@ -0,0 +1,516 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2016-03-24T14:08:11
|
||||
#
|
||||
#-------------------------------------------------
|
||||
#-------------------------------------------------
|
||||
#QQt source
|
||||
#Don't modify this pri
|
||||
#FDLv1.3 GPLv3 LGPLv2.1 PreviewCommercial
|
||||
|
||||
#Project link: https://gitee.com/drabel/LibQQt
|
||||
#if you succeed with LibQQt, please thumb up.
|
||||
#这里是LibQQt源文件pri,所有开关宏都在LibQQt头文件pri里开关。
|
||||
|
||||
#-------------------------------------------------
|
||||
#root dir
|
||||
HEADERS += $$PWD/qqt.h \
|
||||
$$PWD/qqt-local.h \
|
||||
$$PWD/qqtversion.h \
|
||||
$$PWD/qqt-qt.h
|
||||
#platform header
|
||||
contains (QKIT_PRIVATE, WIN32||WIN64) {
|
||||
#win32 base header
|
||||
HEADERS += $$PWD/qqtwin.h
|
||||
} else:contains (QKIT_PRIVATE, macOS||iOS||iOSSimulator) {
|
||||
#mac base header
|
||||
HEADERS += $$PWD/qqtdarwin.h
|
||||
} else:contains (QKIT_PRIVATE, ANDROID||ANDROIDX86) {
|
||||
#android base header
|
||||
HEADERS += $$PWD/qqtandroid.h
|
||||
} else {
|
||||
#linux base header
|
||||
HEADERS += $$PWD/qqtlinux.h
|
||||
}
|
||||
|
||||
#core
|
||||
SOURCES += \
|
||||
$$PWD/core/qqtcore.cpp \
|
||||
$$PWD/core/qqtevent.cpp \
|
||||
$$PWD/core/qqtdictionary.cpp \
|
||||
$$PWD/core/qqtobjectmanager.cpp
|
||||
HEADERS += \
|
||||
$$PWD/core/qqtcore.h \
|
||||
$$PWD/core/qqtevent.h \
|
||||
$$PWD/core/qqtdictionary.h \
|
||||
$$PWD/core/qqtobjectmanager.h
|
||||
|
||||
#后台进程支持,这个只有ios不支持,这个支持在源文件pri里处理。
|
||||
DEFINES += __PROCESSMODULE__
|
||||
#ios has no backend process
|
||||
contains(QKIT_PRIVATE, iOS||iOSSimulator) {
|
||||
DEFINES -= __PROCESSMODULE__
|
||||
}
|
||||
|
||||
#sql
|
||||
SOURCES += \
|
||||
$$PWD/sql/qqtsql.cpp
|
||||
HEADERS += \
|
||||
$$PWD/sql/qqtsql.h
|
||||
SOURCES += \
|
||||
$$PWD/sql/qqtsqlquery.cpp
|
||||
HEADERS += \
|
||||
$$PWD/sql/qqtsqlquery.h
|
||||
|
||||
#gui
|
||||
SOURCES += \
|
||||
$$PWD/gui/qqttablemodel.cpp \
|
||||
$$PWD/gui/qqtdicttreemodel.cpp \
|
||||
$$PWD/gui/qqttreemodel.cpp \
|
||||
$$PWD/gui/qqtftptreemodel.cpp \
|
||||
$$PWD/gui/qqtsqltreemodel.cpp \
|
||||
$$PWD/gui/qqtjsontreemodel.cpp \
|
||||
$$PWD/gui/qqtxmltreemodel.cpp \
|
||||
$$PWD/gui/qqtfilesystemtreemodel.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/gui/qqttablemodel.h \
|
||||
$$PWD/gui/qqttreemodel.h \
|
||||
$$PWD/gui/qqtdicttreemodel.h \
|
||||
$$PWD/gui/qqtftptreemodel.h \
|
||||
$$PWD/gui/qqtsqltreemodel.h \
|
||||
$$PWD/gui/qqtjsontreemodel.h \
|
||||
$$PWD/gui/qqtxmltreemodel.h \
|
||||
$$PWD/gui/qqtfilesystemtreemodel.h \
|
||||
$$PWD/gui/qqtgui.h
|
||||
|
||||
#widgets
|
||||
SOURCES += \
|
||||
$$PWD/widgets/qqtspinbox.cpp \
|
||||
$$PWD/widgets/qqtdoublespinbox.cpp \
|
||||
$$PWD/widgets/qqtdateedit.cpp \
|
||||
$$PWD/widgets/qqttimeedit.cpp \
|
||||
$$PWD/widgets/qqtdatetimeedit.cpp
|
||||
HEADERS += \
|
||||
$$PWD/widgets/qqtspinbox.h \
|
||||
$$PWD/widgets/qqtdoublespinbox.h \
|
||||
$$PWD/widgets/qqtdateedit.h \
|
||||
$$PWD/widgets/qqttimeedit.h \
|
||||
$$PWD/widgets/qqtdatetimeedit.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/widgets/qqtcheckbox.cpp \
|
||||
$$PWD/widgets/qqtheaderview.cpp \
|
||||
$$PWD/widgets/qqtlistview.cpp \
|
||||
$$PWD/widgets/qqtprogressbar.cpp \
|
||||
$$PWD/widgets/qqtpushbutton.cpp \
|
||||
$$PWD/widgets/qqtradiobutton.cpp \
|
||||
$$PWD/widgets/qqttableview.cpp \
|
||||
$$PWD/widgets/qqttabbar.cpp \
|
||||
$$PWD/widgets/qqttabwidget.cpp \
|
||||
$$PWD/widgets/qqttreeview.cpp \
|
||||
$$PWD/widgets/qqttablewidget.cpp \
|
||||
$$PWD/widgets/qqtgraphicsscene.cpp \
|
||||
$$PWD/widgets/qqtgraphicsitem.cpp \
|
||||
$$PWD/widgets/qqtgraphicsview.cpp \
|
||||
$$PWD/widgets/qqttreewidget.cpp \
|
||||
$$PWD/widgets/qqtwidget.cpp \
|
||||
$$PWD/widgets/qqtwidgets.cpp \
|
||||
$$PWD/widgets/qqtlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/widgets/qqtcheckbox.h \
|
||||
$$PWD/widgets/qqtheaderview.h \
|
||||
$$PWD/widgets/qqtlistview.h \
|
||||
$$PWD/widgets/qqtprogressbar.h \
|
||||
$$PWD/widgets/qqtpushbutton.h \
|
||||
$$PWD/widgets/qqtradiobutton.h \
|
||||
$$PWD/widgets/qqttableview.h \
|
||||
$$PWD/widgets/qqttabbar.h \
|
||||
$$PWD/widgets/qqttabwidget.h \
|
||||
$$PWD/widgets/qqttreeview.h \
|
||||
$$PWD/widgets/qqttablewidget.h \
|
||||
$$PWD/widgets/qqtgraphicsscene.h \
|
||||
$$PWD/widgets/qqtgraphicsitem.h \
|
||||
$$PWD/widgets/qqtgraphicsview.h \
|
||||
$$PWD/widgets/qqttreewidget.h \
|
||||
$$PWD/widgets/qqtwidget.h \
|
||||
$$PWD/widgets/qqtwidgets.h \
|
||||
$$PWD/widgets/qqtlabel.h
|
||||
FORMS += \
|
||||
$$PWD/widgets/qqtprogressbar.ui
|
||||
|
||||
#frame
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtsysteminfo.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtsysteminfo.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtlineeditwithsearch.cpp \
|
||||
$$PWD/frame/qqtosdwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtlineeditwithsearch.h \
|
||||
$$PWD/frame/qqtosdwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.h
|
||||
FORMS += \
|
||||
$$PWD/frame/qqtmultipagetablewidget.ui
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtanimation.cpp \
|
||||
$$PWD/frame/qqtapplication.cpp \
|
||||
$$PWD/frame/qqtwifidbwidget.cpp \
|
||||
$$PWD/frame/qqtprogressdialog.cpp \
|
||||
$$PWD/frame/qqtpassworddialog.cpp \
|
||||
$$PWD/frame/qqtframe.cpp \
|
||||
$$PWD/frame/qqtdialog.cpp \
|
||||
$$PWD/frame/qqtinput.cpp \
|
||||
$$PWD/frame/qqtmsgbox.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtanimation.h \
|
||||
$$PWD/frame/qqtapplication.h \
|
||||
$$PWD/frame/qqtwifidbwidget.h \
|
||||
$$PWD/frame/qqtprogressdialog.h \
|
||||
$$PWD/frame/qqtpassworddialog.h \
|
||||
$$PWD/frame/qqtframe.h \
|
||||
$$PWD/frame/qqtdialog.h \
|
||||
$$PWD/frame/qqtinput.h \
|
||||
$$PWD/frame/qqtmsgbox.h
|
||||
FORMS += \
|
||||
$$PWD/frame/qqtprogressdialog.ui \
|
||||
$$PWD/frame/qqtpassworddialog.ui \
|
||||
$$PWD/frame/qqtinput.ui \
|
||||
$$PWD/frame/qqtmsgbox.ui
|
||||
|
||||
|
||||
#multimedia
|
||||
#support Qt5, if Qt4 want to use, you need compile QtMultiMedia for Qt4.
|
||||
#audio success. video arm mips
|
||||
#TODO: video +wince +android +ios +macOS +win +linux
|
||||
contains (DEFINES, __MULTIMEDIA__) {
|
||||
#mplayer
|
||||
contains (DEFINES, __PROCESSMODULE__){
|
||||
SOURCES += $$PWD/multimedia/qqtmplayer.cpp
|
||||
HEADERS += $$PWD/multimedia/qqtmplayer.h
|
||||
}
|
||||
|
||||
#audio
|
||||
SOURCES += \
|
||||
$$PWD/multimedia/qqtwavaudiomanager.cpp \
|
||||
$$PWD/multimedia/qqtaudiomanager.cpp
|
||||
HEADERS += \
|
||||
$$PWD/multimedia/qqtwavaudiomanager.h \
|
||||
$$PWD/multimedia/qqtaudiomanager.h
|
||||
|
||||
#audio effect
|
||||
#using QSound (QSoundEffect optional)
|
||||
SOURCES += \
|
||||
$$PWD/multimedia/qqtsoundeffect.cpp
|
||||
HEADERS += \
|
||||
$$PWD/multimedia/qqtsoundeffect.h
|
||||
}
|
||||
|
||||
|
||||
#printsupport
|
||||
#注释:在qqt_header.pri打开 DEFINES += __PRINTSUPPORT__
|
||||
contains (DEFINES, __PRINTSUPPORT__) {
|
||||
SOURCES += $$PWD/printsupport/qqtprinter.cpp
|
||||
HEADERS += $$PWD/printsupport/qqtprinter.h
|
||||
SOURCES += \
|
||||
$$PWD/frame/qqtword.cpp
|
||||
HEADERS += \
|
||||
$$PWD/frame/qqtword.h
|
||||
|
||||
}
|
||||
|
||||
contains(DEFINES, __QQTCHARTS__) {
|
||||
SOURCES += \
|
||||
$$PWD/charts/qqtchart.cpp \
|
||||
$$PWD/charts/qqtchartview.cpp
|
||||
HEADERS += \
|
||||
$$PWD/charts/qqtchart.h \
|
||||
$$PWD/charts/qqtchartview.h
|
||||
}
|
||||
|
||||
#network
|
||||
contains (DEFINES, __NETWORKSUPPORT__) {
|
||||
SOURCES += $$PWD/network/qqtnetwork.cpp
|
||||
HEADERS += $$PWD/network/qqtnetwork.h
|
||||
|
||||
#报文 用户重要
|
||||
HEADERS += $$PWD/network/qqtmessage.h
|
||||
|
||||
#协议 用户重要
|
||||
HEADERS += $$PWD/network/qqtprotocol.h
|
||||
|
||||
#protocol manager for server iodevice
|
||||
SOURCES += $$PWD/network/qqtprotocolmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtprotocolmanager.h
|
||||
|
||||
#tcp and udp iodevice
|
||||
contains(DEFINES, __TCPUDPSOCKET__){
|
||||
#tcp client iodevice
|
||||
SOURCES += $$PWD/network/qqttcpclient.cpp
|
||||
HEADERS += $$PWD/network/qqttcpclient.h
|
||||
|
||||
#tcp server iodevice
|
||||
SOURCES += $$PWD/network/qqttcpserver.cpp
|
||||
HEADERS += $$PWD/network/qqttcpserver.h
|
||||
|
||||
#udp client iodevice
|
||||
SOURCES += $$PWD/network/qqtudpclient.cpp
|
||||
HEADERS += $$PWD/network/qqtudpclient.h
|
||||
|
||||
#udp server iodevice
|
||||
SOURCES += $$PWD/network/qqtudpserver.cpp
|
||||
HEADERS += $$PWD/network/qqtudpserver.h
|
||||
}
|
||||
|
||||
#serialport iodevice
|
||||
SOURCES += $$PWD/network/qqtserialport.cpp
|
||||
HEADERS += $$PWD/network/qqtserialport.h
|
||||
|
||||
#bluetooth iodevice
|
||||
#注释:在qqt_header.pri打开 DEFINES += __BLUETOOTH__
|
||||
contains (DEFINES, __BLUETOOTH__) {
|
||||
#bluetooth client iodevice
|
||||
SOURCES += $$PWD/network/qqtbluetoothclient.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothclient.h
|
||||
|
||||
#bluetooth server iodevice
|
||||
SOURCES += $$PWD/network/qqtbluetoothserver.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothserver.h
|
||||
|
||||
#bluetooth manager
|
||||
SOURCES += $$PWD/network/qqtbluetoothmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtbluetoothmanager.h
|
||||
}
|
||||
|
||||
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
||||
#websocket client iodevice
|
||||
SOURCES += $$PWD/network/qqtwebsocketclient.cpp
|
||||
HEADERS += $$PWD/network/qqtwebsocketclient.h
|
||||
#websocket server iodevice
|
||||
SOURCES += $$PWD/network/qqtwebsocketserver.cpp
|
||||
HEADERS += $$PWD/network/qqtwebsocketserver.h
|
||||
}
|
||||
|
||||
#ethnet(+wifi) manager
|
||||
#arm mips
|
||||
#TODO: +wince +android +ios +macOS? +win? +linux?
|
||||
contains(QKIT_PRIVATE, EMBEDDED||ARM32||MIPS32) {
|
||||
SOURCES += $$PWD/network/qqtethenetmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtethenetmanager.h
|
||||
SOURCES += $$PWD/frame/qqtwifiwidget.cpp
|
||||
HEADERS += $$PWD/frame/qqtwifiwidget.h
|
||||
FORMS += $$PWD/frame/qqtwifiwidget.ui
|
||||
}
|
||||
|
||||
#webaccess manager
|
||||
contains (DEFINES, __WEBACCESSSUPPORT__) {
|
||||
SOURCES += $$PWD/network/qqtwebaccessmanager.cpp
|
||||
HEADERS += $$PWD/network/qqtwebaccessmanager.h
|
||||
}
|
||||
}
|
||||
|
||||
contains (DEFINES, __EXQUISITE__) {
|
||||
#exquisite
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtframelesshelper.cpp \
|
||||
$$PWD/exquisite/qqtframelesshelperprivate.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtframelesshelper.h \
|
||||
$$PWD/exquisite/qqtframelesshelperprivate.h
|
||||
|
||||
#can click sound support widgets
|
||||
contains (DEFINES, __CLICKSOUNDWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundhelper.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundhelper.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundhelper.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundhelper.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundhelper.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundhelper.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundwidget.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundwidget.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundwidget.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundwidget.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundlabel.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundlabel.cpp \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtclicksoundlabel.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtlongclicksoundlabel.h \
|
||||
$$PWD/exquisite/clicksoundwidgets/qqtdoubleclicksoundlabel.h
|
||||
}
|
||||
|
||||
#can click support widgets
|
||||
contains (DEFINES, __CLICKWIDGETS__) {
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickhelper.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickhelper.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickhelper.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickhelper.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickhelper.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickhelper.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickwidget.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickwidget.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclickwidget.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclickwidget.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclickwidget.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclicklabel.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclicklabel.cpp \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclicklabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/clickwidgets/qqtclicklabel.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtlongclicklabel.h \
|
||||
$$PWD/exquisite/clickwidgets/qqtdoubleclicklabel.h
|
||||
}
|
||||
|
||||
#dialog
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtpopupdialog.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtpopupdialog.h
|
||||
|
||||
#widget
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtfadewidget.cpp \
|
||||
$$PWD/exquisite/qqtninepatchwidget.cpp \
|
||||
$$PWD/exquisite/qqtshadowwidget.cpp \
|
||||
$$PWD/exquisite/qqtflipstackedwidget.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtninepatchwidget.h \
|
||||
$$PWD/exquisite/qqtfadewidget.h \
|
||||
$$PWD/exquisite/qqtshadowwidget.h \
|
||||
$$PWD/exquisite/qqtflipstackedwidget.h
|
||||
|
||||
#special
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtcustompianokeyboard.cpp \
|
||||
$$PWD/exquisite/qqtcustomverificationcode.cpp \
|
||||
$$PWD/exquisite/qqtrulerslider.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtcustompianokeyboard.h \
|
||||
$$PWD/exquisite/qqtcustomverificationcode.h \
|
||||
$$PWD/exquisite/qqtrulerslider.h
|
||||
|
||||
#progressbar
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtcustomprogressbar.cpp \
|
||||
$$PWD/exquisite/qqtcustomspeedmeter.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtcustomprogressbar.h \
|
||||
$$PWD/exquisite/qqtcustomspeedmeter.h
|
||||
|
||||
#pushbutton
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtripplepushbutton.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtripplepushbutton.h
|
||||
|
||||
#label
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqtledbannerlabel.cpp \
|
||||
$$PWD/exquisite/qqtmarqueelabel.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtmarqueelabel.h \
|
||||
$$PWD/exquisite/qqtledbannerlabel.h
|
||||
|
||||
#tabwidget
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/qqthorizontaltexttabbar.cpp \
|
||||
$$PWD/exquisite/qqthorizontaltexttabwidget.cpp \
|
||||
$$PWD/exquisite/qqtpicturetabbar.cpp \
|
||||
$$PWD/exquisite/qqtpicturetabwidget.cpp \
|
||||
$$PWD/exquisite/qqtslidetabbar.cpp \
|
||||
$$PWD/exquisite/qqtslidetabwidget.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/qqtslidetabbar.h \
|
||||
$$PWD/exquisite/qqtslidetabwidget.h \
|
||||
$$PWD/exquisite/qqtpicturetabwidget.h \
|
||||
$$PWD/exquisite/qqtpicturetabbar.h \
|
||||
$$PWD/exquisite/qqthorizontaltexttabwidget.h \
|
||||
$$PWD/exquisite/qqthorizontaltexttabbar.h
|
||||
|
||||
|
||||
#svg widgets
|
||||
contains (DEFINES, __SVGWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgwidget.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgpushbutton.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgcheckbox.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgradiobutton.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtgraphicssvgitem.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvglabel.cpp \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgprogressbar.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgwidget.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgpushbutton.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgcheckbox.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgradiobutton.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtgraphicssvgitem.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvglabel.h \
|
||||
$$PWD/exquisite/svgwidgets/qqtsvgprogressbar.h
|
||||
}
|
||||
|
||||
#gif widgets
|
||||
contains (DEFINES, __GIFWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifwidget.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgiflabel.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifpushbutton.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifcheckbox.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifradiobutton.cpp \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifprogressbar.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifwidget.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgiflabel.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifpushbutton.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifcheckbox.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifradiobutton.h \
|
||||
$$PWD/exquisite/gifwidgets/qqtgifprogressbar.h
|
||||
}
|
||||
|
||||
#opengl widgets
|
||||
contains (DEFINES, __OPENGLWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwidget.cpp \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwindow.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwidget.h \
|
||||
$$PWD/exquisite/openglwidgets/qqtopenglwindow.h
|
||||
}
|
||||
|
||||
contains (DEFINES, __COLORWIDGETS__) {
|
||||
SOURCES += \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorwidget.cpp \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorlabel.cpp
|
||||
HEADERS += \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorwidget.h \
|
||||
$$PWD/exquisite/colorwidgets/qqtcolorlabel.h
|
||||
}
|
||||
}
|
||||
|
||||
include ($$PWD/qqt_3rdparty.pri)
|
@ -23,7 +23,7 @@ app_include(QQtBasedLibTest)
|
||||
#这个函数会到$$QQT_SDK_ROOT/LibName/$$QKIT_STD_DIR/include目录里找。相当于在Lib的需要inlude的头文件目录里有子目录
|
||||
#qmake函数对子目录的兼容不是非常好。所以用户链接Lib,请自行添加include目录子目录的内容
|
||||
#这两个函数的意义是在$$QQT_SDK_ROOT/QQtBasedLibTest/$$QKIT_STD_DIR/include/下的子路径添加include
|
||||
app_add_include(QQtBasedLibTest, QQtBasedLibTest)
|
||||
app_add_header(QQtBasedLibTest, QQtBasedLibTest)
|
||||
#这个函数的意义是在$$QQT_SDK_ROOT/QQtBasedLibTest/$$QKIT_STD_DIR/lib里查找添加xxx_lib
|
||||
app_add_link(QQtBasedLibTest, QQtBasedLibTest)
|
||||
app_add_library(QQtBasedLibTest, QQtBasedLibTest)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user