1
0
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:
tianduanrui 2018-05-24 20:03:03 +08:00
parent 455b2d0917
commit 060d1f6b4a
30 changed files with 2570 additions and 311 deletions

467
lib/lib_header.pri Normal file
View 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 多路的HttpFtpQQtAccessManager 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
View 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
View 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)

View 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
}
}

View 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
}
}

View File

@ -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

View File

@ -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)
}

View File

@ -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}\) )

View File

@ -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

View File

@ -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 都做了一下这些事情

View File

@ -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)

View File

@ -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)

View File

@ -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
View File

@ -0,0 +1,9 @@
#---------------------------------------------------------------
#lib_header.pri
#你可以通过这个文件告诉lib用户这个文件不要修改
#---------------------------------------------------------------
#################################################################
##project Headers
#################################################################
include ($$PWD/qqt_header.pri)

View File

@ -39,7 +39,7 @@ typedef struct QQTSHARED_EXPORT tagWifi
bool isValid();
/* only mips32 no use const, arm used
* MIPS32不使用constARM32使用了
* MIPS32不使用constArm32使用了
*/
#ifdef __MIPS_LINUX__
tagWifi& operator= ( tagWifi& w );

View File

@ -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
#################################################################

View File

@ -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 \

View File

@ -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
}

View File

@ -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

View File

@ -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})

View File

@ -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.")
}

View File

@ -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

View File

@ -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)

View 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)

View 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})

View 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)

View File

@ -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)