1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00
LibQQt/src/qqt_install.pri
2018-04-12 23:09:02 +08:00

232 lines
9.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

################################################
##qqt_install.pri, making sdk function
##install to Qt library
##install to SDK path
##link from build
##please don't modify this pri
##need qqt_version.pri qqt_header.pri qqt_source.pri
################################################
################################################
##QQt install functions
##variable can be private and default inherit
################################################
defineReplace(create_dir_struct) {
#if it's qt library, don't create
command =
!equals(QQT_SDK_PWD , $$[QT_INSTALL_DATA]){
!contains(QKIT_PRIVATE, macOS) {
command += $$MK_DIR $$QQT_INC_DIR $$CMD_SEP
}
command += $$MK_DIR $$QQT_LIB_DIR $$CMD_SEP
command += $$MK_DIR $$QQT_CMAKE_DIR $$CMD_SEP
command += $$MK_DIR $$QQT_PRI_PATH $$CMD_SEP
}
return ($$command)
}
defineReplace(create_windows_sdk) {
#need cd sdk root
command =
#copy header
command += $${COPY_DIR} $${QQT_SRC_PWD}\\*.h* $${QQT_INC_DIR} $$CMD_SEP
#should be *.dll *.lib
command += $${COPY_DIR} $${QQT_BUILD_PWD}\\* $${QQT_LIB_DIR}
return ($$command)
}
defineReplace(create_linux_sdk) {
#need cd sdk root
copy_command = $$get_copy_dir_and_file($${QQT_SRC_PWD}, "*.h*", $${QQT_INC_DIR})
command =
command += $${copy_command} $$CMD_SEP
#should be *.so.* *.a
command += $$COPY_DIR $${QQT_BUILD_PWD}/* $${QQT_LIB_DIR}
return ($$command)
}
defineReplace(create_mac_sdk){
#need cd framework root
#QQT_BUILD_PWD MODULE_NAME QQT_MAJOR_VERSION
QQT_BUNDLE_VER_DIR = Versions/$${QQT_MAJOR_VERSION}
QQT_BUNDLE_CUR_DIR = Versions/Current
QQT_BUNDLE_INC_DIR = $${QQT_BUNDLE_VER_DIR}/Headers
QQT_BUNDLE_RES_DIR = $${QQT_BUNDLE_VER_DIR}/Resources
QQT_BUNDLE_EXE_FILE = $${QQT_BUNDLE_VER_DIR}/$${MODULE_NAME}
QQT_BUNDLE_CUR_INC_DIR = $${QQT_BUNDLE_CUR_DIR}/Headers
QQT_BUNDLE_CUR_RES_DIR = $${QQT_BUNDLE_CUR_DIR}/Resources
QQT_BUNDLE_CUR_EXE_FILE = $${QQT_BUNDLE_CUR_DIR}/$${MODULE_NAME}
QQT_BUNDLE_CUR_LINK = Current
QQT_BUNDLE_INC_LINK = Headers
QQT_BUNDLE_RES_LINK = Resources
QQT_BUNDLE_EXE_LINK = $${MODULE_NAME}
command =
command += $$MK_DIR $$QQT_BUNDLE_VER_DIR $$CMD_SEP
command += $$MK_DIR $$QQT_BUNDLE_INC_DIR $$CMD_SEP
#copy lib
#should be *
command += $$COPY_DIR $${QQT_BUILD_PWD}/$${MODULE_NAME}.framework/$${QQT_BUNDLE_VER_DIR}/* $$QQT_BUNDLE_VER_DIR $$CMD_SEP
#copy header
copy_command = $$get_copy_dir_and_file($${QQT_SRC_PWD}, "*.h*", $${QQT_BUNDLE_INC_DIR})
command += $${copy_command} $$CMD_SEP
#link header current resources
command += $$CD Versions $$CMD_SEP
command += $$LN $${QQT_MAJOR_VERSION} $${QQT_BUNDLE_CUR_LINK} $$CMD_SEP
command += $$CD .. $$CMD_SEP
command += $$LN $$QQT_BUNDLE_CUR_INC_DIR $${QQT_BUNDLE_INC_LINK} $$CMD_SEP
command += $$LN $$QQT_BUNDLE_CUR_RES_DIR $${QQT_BUNDLE_RES_LINK} $$CMD_SEP
command += $$LN $$QQT_BUNDLE_CUR_EXE_FILE $${QQT_BUNDLE_EXE_LINK}
lessThan(QT_MAJOR_VERSION, 5){
command += &&
command += chmod +x $${PWD}/mac_deploy_qt4.sh &&
command += $${PWD}/mac_deploy_qt4.sh $${QQT_BUNDLE_VER_DIR}/$${MODULE_NAME}
}
return ($$command)
}
defineReplace(create_qt_lib_pri){
#need cd sdk root
#QQT_BASE_DIR MODULE_NAME QQT_VERSION MODULE_CNAME
##write qt_lib_qqtcore.pri
command =
command += $$get_empty_file($${QQT_PRI_FILEPATH}) $$CMD_SEP
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) {
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) {
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) {
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
} else {
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
}
greaterThan(QT_MAJOR_VERSION, 4):{
command += echo "QT.$${module_name}.depends = core sql network gui xml widgets" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
} else {
command += echo "QT.$${module_name}.depends = core sql network gui xml" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
}
command += echo "QT.$${module_name}.uses =" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
command += echo "QT.$${module_name}.DEFINES = QQT_LIBRARY" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
command += echo "QT.$${module_name}.enabled_features =" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
command += echo "QT.$${module_name}.disabled_features =" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
command += echo "QT_CONFIG +=" >> $${QQT_PRI_FILEPATH} $$CMD_SEP
command += echo "QT_MODULES += $${module_name}" >> $${QQT_PRI_FILEPATH}
return ($$command)
}
defineReplace(create_library_sdk){
#need cd sdk root
#QQT_BASE_DIR MODULE_NAME QQT_VERSION MODULE_CNAME
#$1 $2 $3...
command =
command += $$RM_DIR $${QQT_SDK_PWD} $$CMD_SEP
command += $$MK_DIR $${QQT_SDK_PWD} $$CMD_SEP
command += $$CD $${QQT_SDK_PWD} $$CMD_SEP
command += $$create_dir_struct()
#这里不是目标为Windows才拷贝而是开发机是Windows就得这么拷贝。
#Windows下Win目标、Android目标都走这里。
#contains(QKIT_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) {
#message(create QQt mac bundle framework)
command += $$MK_DIR lib/$${MODULE_NAME}.framework $$CMD_SEP
command += $$CD lib/$${MODULE_NAME}.framework $$CMD_SEP
command += $$create_mac_sdk() $$CMD_SEP
command += $$CD ../../ $$CMD_SEP
#create prl
command += $$COPY $${QQT_BUILD_PWD}/$${MODULE_NAME}.framework/$${MODULE_NAME}.prl lib/$${MODULE_NAME}.framework/$${MODULE_NAME}.prl $$CMD_SEP
} else {
#Android在linux开发机下也会走这里Android目标LibQQt可以发布Win和Linux两种格式的SDK。
#message(create QQt linux struct library)
command += $$create_linux_sdk() $$CMD_SEP
command += $$COPY $${QQT_BUILD_PWD}/*.prl lib $$CMD_SEP
}
}
command += $$create_qt_lib_pri()
return ($$command)
}
################################################
##QQt install workflow
##used to output sdk, can't support windows and ios
##this don't need any other path set.
################################################
defineReplace(create_qqt_sdk){
#-------module name QQt
MODULE_NAME=QQt
module_name = $$lower($${MODULE_NAME})
#qqt defined these dir struct, used from qt library
QQT_INC_DIR = include/$${MODULE_NAME}
QQT_LIB_DIR = lib
QQT_CMAKE_DIR=lib/cmake/$${MODULE_NAME}
QQT_PRI_PATH=mkspecs/modules
QQT_PRI_FILEPATH=$${QQT_PRI_PATH}/qt_lib_$${module_name}.pri
#不仅仅发布目标为Windows的时候需要改变
#开发Host是Windows的时候都要改变。路径问题是两种操作系统固有的痛。
#contains(QKIT_PRIVATE, WIN32||WIN64) {
equals(QMAKE_HOST.os, Windows) {
#on windows every path must use \ sep.
QQT_SRC_PWD~=s,/,\\,g
QQT_BUILD_PWD~=s,/,\\,g
QQT_SDK_PWD~=s,/,\\,g
QQT_INC_DIR~=s,/,\\,g
QQT_LIB_DIR = lib
QQT_CMAKE_DIR~=s,/,\\,g
QQT_PRI_PATH~=s,/,\\,g
QQT_PRI_FILEPATH~=s,/,\\,g
#ignored
HEADERS_WIN=$${HEADERS}
HEADERS_WIN~=s,/,\\,g
#on windows, copy all *.h*, include closed feature header.
#qmake regexp use perl grammer
#HEADERS_WIN~=s/[d ]+/h+/g how to mod space to +
}
#create library struct
#create platform sdk
#create mkspec module pri
command = $$create_library_sdk()
#message ($$command)
return ($$command)
}
#if you want to use QQt with QT += QQt please open this feature
#unimplete: CONFIG += install_to_qt_library
defineReplace(install_to_qt_library){
MODULE_NAME=QQt
#QQT_BUILD_PWD
QQT_SDK_PWD=$$[QT_INSTALL_DATA]
message(QQt sdk install here:$${QQT_SDK_PWD})
}