文件主要是用于QT对区别不同编译器的文件输出,目前只写了 win , linux 和 mac 有项目需求再补充, BUILD_OUTPUT_PATH 是最后的目录名称,
当QT安装了MSVC编译支持时,项目在选择的VS第一次编译或qmake时,会在项目目录中生成MSVC目录,并在MSVC目录中生成.sln等MSVC项目构建文件。
效果图
在QT转换为MSVC的效果图, 可以直接用MSVC打开编译
以下是完整的 pri, 如果想更好的效果,建议在每个pro的TEMPLATE后将其incoude,
# 文件主要是用于QT对区别不同编译器的文件输出,目前只写了 win , linux 和 mac 有项目需求再补充,
# BUILD_OUTPUT_DIR_NAME 是最后的目录名称
# 文件后面的是设置输出到目标目录 DESTDIR = $$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/
#
# 2022-02-24 63744457@qq.com
# 2022-02-25 63744457@qq.com
# 2022-02-28AM 63744457@qq.com 复制动态库到程序目录
# 2022-02-28PM 63744457@qq.com 增加 QT项目 转 MSVC功能
# 2022-03-07 63744457@qq.com 修改debug复制内部库异常
# 2022-03-12 63744457@qq.com 增加 __COMPILE_RELEASE__ __COMPILE_DEBUG__
# 2022-03-16 63744457@qq.com
# DEFINES 加入项目路径 PROJECT_PATH=\\\"$$TARGET_PWD/../\\\"
# 重新定义 OBJECTS_DIR 输出路径
# 2022-03-16 63744457@qq.com
# 去除 QMAKE_POST_LINK因为太占资源, release编译时会自动生成create_qtenv.bat, 需要时才创建程序的QT运行环境
# msvc强制为 /source-charset:utf-8 /execution-charset:utf-8
# toLocal8Bit:Unicode编码
# toLatin1:ASCII编码
# 2022-03-21 63744457@qq.com
# 修改 include 目录生成位置,在build目录中生成
# 2022-03-22 63744457@qq.com
# 加入 LIBS_SATAIC_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/libs_static"
# 2022-04-03 63744457@qq.com
# __COMPILE_MSVC__ 加入版本号 2008 2010 2012 2013......
# 2023-06-03 63744457@qq.com
# 加入完善 linux
# 2023-06-14 63744457@qq.com
# 生成linux软件的运行脚本
# 2023-06-16 63744457@qq.com
# 生成win dug下软件的运行脚本
# 2023-06-19 63744457@qq.com
# 生成win release 下软件的运行脚本
# 2023-06-20 63744457@qq.com
# 因为QtCreator 项目运行目录和 qmake输出目录不一至,在QT4.8.7及以下要区分大小
# contains( MAKEFILE_GENERATOR, "MINGW" )
#
# 2023-09-01 63744457@qq.com
# 添加了格式化打印输出文件 COperationRecord.cpp COperationRecord.h
#
# 2023-09-23 63744457@qq.com
# 为了方便MSVC代码中直接引用库,加入了 DEFINES += LIBS_OUTPUT_PATH=\\\"$${LIBS_OUTPUT_PATH}\\\"
# 使用方法 #pragma comment( lib, LIBS_OUTPUT_PATH"/xxxx.lib" )
TARGET_PWD=$$PWD
message( "------$${TARGET}": "start------------------------------------------" )
CONFIG += qt
# message( $${TARGET}": QT_VERSION= "$${QT_VERSION} )
# message( $${TARGET}": MAKEFILE_GENERATOR= "$${MAKEFILE_GENERATOR} )
contains(QT_MAJOR_VERSION, 4): {
DEFINES += nullptr=NULL
# SYSTEMINFO = $${system("systeminfo")}
# # message( $${TARGET}": SYSTEMINFO= "$${SYSTEMINFO} )
# contains( SYSTEMINFO, "Windows\\\ 10" ):{
# CONFIG += windows10
# }
# contains( SYSTEMINFO, "Windows" ):{ # CONFIG += windows10
# # contains( SYSTEMINFO, "x64-based" ):{QT_ARCH=x86_64 } else:{ QT_ARCH=i386}
# }
}
#message( $${TARGET}": CONFIG= "$${CONFIG} )
#message( $${TARGET}": TARGET_PWD= "$$TARGET_PWD )
#message( $${TARGET}": QT_ARCH= "$$QT_ARCH )
#message( $${TARGET}": QT = "$${QT} )
#message( $${TARGET}": QMAKE = "$${QMAKE} )
#message( $${TARGET}": QMAKE_CC = "$${QMAKE_CC} )
#message( $${TARGET}": QMAKE_CXX = "$${QMAKE_CXX} )
#message( $${TARGET}": QMAKESPEC = "$${QMAKESPEC} )
#message( $${TARGET}": DEFINES= "$${DEFINES} )
#message( $${TARGET}": QT_ARCH= "$$[QT_ARCH] )
#message( $${TARGET}": QT_MAJOR_VERSION= "$${QT_MAJOR_VERSION} )
#unix:{
#message( $${TARGET}": UNAME = "$${system("uname --a")} )
#}
DEFINES += PROJECT_PATH=\\\"$$TARGET_PWD/\\\"
BUILD_OUTPUT_DIR_NAME=""
COMPILE_TOOLS=""
win32:{
BUILD_OUTPUT_DIR_NAME = "win"
# message($${TARGET}": ""win");
contains( CONFIG, "mingw" ) || contains( MAKEFILE_GENERATOR, "mingw" ) || contains( MAKEFILE_GENERATOR, "MINGW" ):{
# QMAKE_CXXFLAGS += -shared --output-def dlltest.def
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_mingw"
# message($${TARGET}": ""msvc");
DEFINES += __COMPILE_MINGW__
contains( QMAKE_CXX, "g++" ) :{
# BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_gxx"
DEFINES += __GXX__ __GCC__
DEFINES += __COMPILE_GXX__ __COMPILE_GCC__ __COMPILE_GNUC__
COMPILE_TOOLS = win-g++ g++
} else: contains( QMAKE_CC, "gcc" ) :{
# BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_gcc"
DEFINES += __GCC__
DEFINES += __COMPILE_GCC__ __COMPILE_GNUC__
COMPILE_TOOLS = win-gcc
}
} else {
contains( CONFIG, "msvc" ): QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
contains( CONFIG, "msvc" ): QMAKE_CFLAGS += /source-charset:utf-8 /execution-charset:utf-8
contains( CONFIG, "msvc" ): QMAKE_CXX += /source-charset:utf-8 /execution-charset:utf-8
contains( CONFIG, "win32-msvc2017" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc2017"
# message($${TARGET}": ""msvc2017");
DEFINES += __COMPILE_MSVC2017__
DEFINES += __COMPILE_MSVC__=2017
COMPILE_TOOLS = win32-msvc2017
} else {
contains( CONFIG, "win32-msvc2015" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc2015"
# message($${TARGET}": ""msvc2015");
DEFINES += __COMPILE_MSVC2015__
DEFINES += __COMPILE_MSVC__=2015
COMPILE_TOOLS = win32-msvc2015
} else {
contains( CONFIG, "win32-msvc2019" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc2019"
# message($${TARGET}": ""msvc2019");
DEFINES += __COMPILE_MSVC2019__
DEFINES += __COMPILE_MSVC__=2019
COMPILE_TOOLS = win32-msvc2019
} else {
contains( CONFIG, "win32-msvc2013" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc2013"
# message($${TARGET}": ""msvc2013");
DEFINES += __COMPILE_MSVC2013__
DEFINES += __COMPILE_MSVC__=2013
COMPILE_TOOLS = win32-msvc2013
} else {
contains( CONFIG, "win32-msvc2008" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc2008"
# message($${TARGET}": ""msvc2019");
DEFINES += __COMPILE_MSVC2008__
DEFINES += __COMPILE_MSVC__=2008
COMPILE_TOOLS = win32-msvc2008
} else {
contains( CONFIG, "msvc" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_msvc"
# message($${TARGET}": ""msvc");
DEFINES += __COMPILE_MSVC__=1
COMPILE_TOOLS = win32-msvc20xx
}
}
}
}
}
}
contains( CONFIG, "msvc_cross" ):contains( CONFIG, "package_manifest" ):contains( CONFIG, "winrt" ):{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_uwp"
# message($${TARGET}": ""msvc2017");
DEFINES += __UWP__
}
}
} else:unix:{
message($${TARGET}": ""unix linux")
BUILD_OUTPUT_DIR_NAME = "lin"
# contains( QMAKE_CC, "gcc" ) | contains( QMAKE_CXX, "g++" ) :{
# BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_gcc"
# DEFINES += __GCC__
# DEFINES += __COMPILE_GCC__
# }
contains( QMAKE_CXX, "g++" ) :{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_gxx"
DEFINES += __GXX__
DEFINES += __COMPILE_GCC__ __COMPILE_GXX__
COMPILE_TOOLS = linux-gxx
} else: contains( QMAKE_CC, "gcc" ) :{
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_gcc"
DEFINES += __GCC__
DEFINES += __COMPILE_GCC__
COMPILE_TOOLS = linux-gcc
}
}
else:macx:{
message($${TARGET}": ""macx")
}
contains(QT_ARCH, x86_64) {
# message($${TARGET}": ""x86_64")
DEFINES += __ARCH_X86_64__ __SYS64BIT__
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_x86_64"
} else {
contains(QT_ARCH, i386) {
# message($${TARGET}": ""x86")
DEFINES += __ARCH_I386__ __ARCH_I686__ __SYS32BIT__
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_i386"
} else {
contains(QT_ARCH, arm64) { # 不知 arm64 对不对, 没测试
# message($${TARGET}": ""arm64")
DEFINES += __ARCH_ARM64__ __SYS64BIT__
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_aram64"
} else {
contains(QT_ARCH, arm32) { # 不知 arm32 对不对, 没测试
# message($${TARGET}": ""arm32")
DEFINES += __ARCH_X86_64__ __SYS64BIT__
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_x86_64"
} else {
contains(QT_MAJOR_VERSION, 4): {
DEFINES += __ARCH_I386__ __ARCH_I686__ __SYS32BIT__
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_i386"
} else{
error("---->I don't know what the environment is, so I need to supplement the settings.") # 不知是什么环境,要补充
}
}
}
}
}
CONFIG( debug, "debug | release" ): {
# message($${TARGET}": ""MyDebug");
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_debug"
CONFIG -= release Release
CONFIG -= debug_and_release debug_and_release_target
DEFINES += __COMPILE_DEBUG__
} else {
# 判断 profile 还是 release
contains( CONFIG , "force_debug_info" ): { # profile
# message($${TARGET}": ""MyProfile");
# message($${TARGET}": ""force_debug_info");
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_profile"
} else { # release
# message($${TARGET}": ""MyRelease");
# message($${TARGET}": "" not force_debug_info");
BUILD_OUTPUT_DIR_NAME = $${BUILD_OUTPUT_DIR_NAME}"_release"
}
CONFIG -= debug Debug
CONFIG -= debug_and_release debug_and_release_target
DEFINES += __COMPILE_RELEASE__
}
contains(CONFIG,qt): BUILD_OUTPUT_DIR_NAME =$${BUILD_OUTPUT_DIR_NAME}"Qt"$${QT_VERSION}
# 2022-02-28 复制动态库到程序目录
# BUILD_OUTPUT_DIR_NAME = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}"
BUILD_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}"
BINS_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/bin"
LIBS_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/libs" # 动态库
LIBS_SATAIC_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/libs_static" # 动态库
# INC_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/include"
INC_OUTPUT_PATH = "$$TARGET_PWD/build/include"
DEFINES += LIBS_OUTPUT_PATH=\\\"$${LIBS_OUTPUT_PATH}\\\"
DEPENDPATH += $$LIBS_OUTPUT_PATH
contains(TEMPLATE,lib) | contains(TEMPLATE,vclib): {
# message($${TARGET}": "lib)
contains( CONFIG , "staticlib" ):{ # 静态库
LIBS_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/libs_static/"
} else { # 动态库
LIBS_OUTPUT_PATH = "$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/libs"
}
!exists($$INC_OUTPUT_PATH):{
win32:{
INC_OUTPUT_PATH = $$replace( INC_OUTPUT_PATH,"/","\\")
system(mkdir $${INC_OUTPUT_PATH}"\\" )
}else: unix:{
system(mkdir -p $${INC_OUTPUT_PATH} )
}else: maxc:{# 没用过这系统
system(mkdir $${INC_OUTPUT_PATH}"\\" )
}
}
message($${TARGET}": "$${LIBS_OUTPUT_PATH})
DESTDIR = $${LIBS_OUTPUT_PATH}/
} else:contains(TEMPLATE,app)|contains(TEMPLATE,vcapp):{
#2022-02-28 复制动态库到程序目录
#message($${TARGET}": "app)
#isEmpty($$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}"/libs"): message($${TARGET}": "isEmpty)
exists($$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}"/libs"):{ # 复制动态库到程序目录
#message($${TARGET}": "exists)
export($${LIBS_OUTPUT_PATH})
win32:{
#message($${TARGET}": "copy)
LIBS_OUTPUT_PATH = $$replace( LIBS_OUTPUT_PATH,"/","\\")
BINS_OUTPUT_PATH = $$replace( BINS_OUTPUT_PATH,"/","\\")
contains(CONFIG,qt):{
contains( CONFIG, release ): {
#QMAKE_POST_LINK += "copy /B /V /Y $${LIBS_OUTPUT_PATH}\\*.dll $${LIBS_OUTPUT_PATH}\\..\\bin" |
BAT_PATH += "copy /B /V /Y .\\libs\\*.dll .\\bin\\" ^|
}
# else: QMAKE_POST_LINK += "copy /B /V /Y $${LIBS_OUTPUT_PATH}\\*.dll $${LIBS_OUTPUT_PATH}\\..\\bin"
} else: {
#QMAKE_POST_LINK += "copy /B /V /Y $${LIBS_OUTPUT_PATH}\\*.dll $${BINS_OUTPUT_PATH}"
BAT_PATH += "copy /B /V /Y .\\libs\\*.dll .\\bin\\"
}
# QMAKE_POST_LINK += "copy /B /V /Y $${LIBS_OUTPUT_PATH}\\*.dll $${BINS_OUTPUT_PATH}"
} else: unix:{
#QMAKE_POST_LINK += cp -f $${LIBS_OUTPUT_PATH}"/*.so" $${LIBS_OUTPUT_PATH}/../bin
BAT_PATH += cp -f ./libs"/*.so" ./bin
} else: maxc:{# 没用过这系统
# QMAKE_POST_LINK += cp -f $${LIBS_OUTPUT_PATH}"/" $${LIBS_OUTPUT_PATH}/../bin
BAT_PATH += cp -f ./libs"/*.so" ./bin
}
}
# system(mkdir $${TARGET_PWD}"\\libs" )
DESTDIR = $${BINS_OUTPUT_PATH}/
} else : {
DESTDIR = $${BINS_OUTPUT_PATH}/../
}
OBJECTS_DIR = "$$OUT_PWD/$${BUILD_OUTPUT_DIR_NAME}/"
#MOC_DIR = "$$TARGET_PWD/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_moc"
#UI_DIR = "$$TARGET_PWD/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_ui"
#RCC_DIR = "$$TARGET_PWD/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_rcc"
MOC_DIR = "$$TARGET_PWD/build/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_moc"
UI_DIR = "$$TARGET_PWD/build/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_ui"
RCC_DIR = "$$TARGET_PWD/build/create/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}_rcc"
# 增加 QT 转 VS
contains( CONFIG, msvc ):!exists(./msvc/qt2vs_readme.txt):{
MSVC_OUTPUT_PATH = $$replace( TARGET_PWD,"/","\\")
system(mkdir $${MSVC_OUTPUT_PATH}\\msvc )
system(echo "Only run QT to vs once. If you want to run again, delete this file!">>./msvc/qt2vs_readme.txt )
system(echo "只运行一次QT转VS,如果要重新运行,删除本文件即可!">>./msvc/qt2vs_readme.txt )
QMAKE_CXXFLAGS += -Gm
# CONFIG+=dll
contains(TEMPLATE,subdirs): {
#message(subdirs)
# system(qmake -r -spec win32-msvc2017 -tp vc -o ./msvc/) # 含子项目,指定VS版本
system(qmake -r -tp vc -o ./msvc/) # 含子项目
} else : {
# message(app)
#system(qmake -spec win32-msvc2017 -tp vc -o ./msvc/) # 不含子项目,指定VS版本
system(qmake -tp vc -o ./msvc/) # 不含子项目
}
}
#OBJECTS_DIR += $$OUT_PWD/../obj/$${BUILD_OUTPUT_DIR_NAME}/
#message($${TARGET}": "$${OBJECTS_DIR});
# 在编译 release 后为程序添加相关的qt dll文件
CONFIG( release, "debug | release" ):{
contains(CONFIG,qt):!contains(TEMPLATE,lib):!contains(TEMPLATE,vclib):!contains(TEMPLATE,subdirs):!contains(TEMPLATE,vcsubdirs):{
QT_HOST_BIN = $$[QT_HOST_BINS]
QT_HOST_BIN =$$replace( QT_HOST_BIN,"/","\\")
exists($$[QT_HOST_BINS]/windeployqt.exe): {
contains( CONFIG , "force_debug_info" ):{ # profile
# QMAKE_POST_LINK += $$[QT_HOST_BINS]/windeployqt.exe --release --force --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
# QMAKE_POST_LINK += $$[QT_HOST_BINS]/windeployqt.exe --release --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
WINDEPLOYQT_COMMAND = $$[QT_HOST_BINS]/windeployqt.exe --release --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
BAT_QTPATH += $$[QT_HOST_BINS]/windeployqt.exe --release --qmldir ./qml/ --dir ./bin/ ./bin/$${TARGET}.exe
} else { # release
#QMAKE_POST_LINK += $$[QT_HOST_BINS]/windeployqt.exe --force --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
# QMAKE_POST_LINK += $$[QT_HOST_BINS]/windeployqt.exe --force --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
WINDEPLOYQT_COMMAND = $$[QT_HOST_BINS]/windeployqt.exe --force --qmldir $${TARGET_PWD} --dir $${DESTDIR} $${DESTDIR}$${TARGET}.exe
BAT_QTPATH += $$[QT_HOST_BINS]/windeployqt.exe --force --qmldir ./qml/ --dir ./bin/ ./bin/$${TARGET}.exe
}
WINDEPLOYQT_COMMAND=$$replace( WINDEPLOYQT_COMMAND,"/","\\")
#QMAKE_POST_LINK += $$WINDEPLOYQT_COMMAND
# message("QT_HOST_BIN: " $$[QT_HOST_BIN] )
# message("QT_HOST_BIN: " $${QT_HOST_BIN} )
# message("QT_HOST_BIN: " $$QT_HOST_BIN )
# message("BAT_PATH: " $$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat )
!exists($$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat): {
#D:\Qt\Qt5.12.2\5.12.2\mingw73_64\bin\qtenv2.bat
#set PATH=D:\Qt\Qt5.12.2\5.12.2\mingw73_64\bin;D:\Qt\Qt5.12.2\Tools\mingw730_64\bin;%PATH%
contains( CONFIG, "mingw" ):{
contains(QT_ARCH, x86_64): PATH=$$[QT_HOST_BINS];$$[QT_HOST_BINS]/../../../Tools\mingw730_64\\bin;^%PATH^%
else: PATH=$$[QT_HOST_BINS];$$[QT_HOST_BINS]/../../../Tools\mingw730_32\\bin;^%PATH^%
SYS_QT_PATH=$$replace( PATH,"/","\\")
system( "echo set PATH=$$SYS_QT_PATH >$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat" )
}
BAT_PATH +=$$replace( BAT_QTPATH,"/","\\")
BAT_PATH += "^| copy /B /V /Y $$QT_HOST_BIN\\*work.dll .\\bin\\"
exists($$TARGET_PWD/libs/build/$${BUILD_OUTPUT_DIR_NAME}/libs): BAT_PATH += "^| copy /B /V /Y ..\\..\\libs\\..\\build\\$${BUILD_OUTPUT_DIR_NAME}\\libs\\*.dll .\\bin\\"
else: exists($$TARGET_PWD/libs/$${BUILD_OUTPUT_DIR_NAME}/libs): BAT_PATH += "^| copy /B /V /Y ..\\..\\libs\\$${BUILD_OUTPUT_DIR_NAME}\\libs\\*.dll .\\bin\\"
else: exists($$TARGET_PWD/libs): BAT_PATH += " ^| copy /B /V /Y ..\\..\\libs\\*.dll .\\bin\\"
else: exists($$TARGET_PWD/lib): BAT_PATH += " ^| copy /B /V /Y ..\\..\\lib\\*.dll .\\bin\\"
#message("QT_HOST_PREFIX : " $$[QT_HOST_PREFIX] )
#message("SYS_QT_PATH: " $$SYS_QT_PATH )
system( "echo cd /d %~dp0 >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat" )
system( "echo %~d0 >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat" )
system( "echo $$BAT_PATH >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/create_qtenv.bat" )
}
}
unix:!exists($$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.sh): {
#SH_FILE =\\\" #!/bin/bash
#SH_FILE =\\\"\\$\\(dirname \\$"0"\\)\\\"
#system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.sh" )
SH_FILE ="current_dir="\\\"\\$\\(dirname \\$"0"\\)\\\"\\\n
SH_FILE +="LD_LIBRARY_PATH="\\$"libdir:"\\${current_dir}"/libs:"\\$"{LD_LIBRARY_PATH:+:"\\$"LD_LIBRARY_PATH}"\\\n
SH_FILE += "export LD_LIBRARY_PATH"\\\n
SH_FILE += "sudo chmod a+x "\\$"{current_dir}/bin/"$${TARGET}\\\n
SH_FILE += "exec "\\$"{current_dir}/bin/"$${TARGET}
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.sh" )
system( "sudo chmod a+x $$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.sh" )
}
}
}
#CONFIG( debug, "debug | release" ):
{
!contains(TEMPLATE,lib):!contains(TEMPLATE,vclib):!contains(TEMPLATE,subdirs):!contains(TEMPLATE,vcsubdirs):{
QT_HOST_BIN = $$[QT_HOST_BINS]
win32:!exists($$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat): {
SH_FILE ="@echo off"
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
SH_FILE ="echo Setting up environment for Qt usage..."
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
#SH_FILE ="set current_app=%~dp0\"bin/"$${TARGET}".exe\""
#system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
SH_FILE ="set PATH=$${LIBS_OUTPUT_PATH};%PATH%"
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
# SH_FILE ="set PATH=%QT_HOST_BIN%;%QT_HOST_BIN%\\..\\..\\Tools\\mingw730_64\\bin;$${LIBS_OUTPUT_PATH};%PATH%"
# system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
SH_FILE = "cd /D %~dp0\"bin\""
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
SH_FILE ="start $${TARGET}.exe"
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
SH_FILE = "exit"
system( "echo $$SH_FILE >>$$TARGET_PWD/build/$${BUILD_OUTPUT_DIR_NAME}/$${TARGET}.bat" )
}
}
}
message("------$${TARGET}": "config------------------------------------------")
message($${TARGET}": TEMPLATE = "$${TEMPLATE})
message($${TARGET}": QT_HOST_BINS = "$$[QT_HOST_BINS])
message($${TARGET}": QMAKE_POST_LINK = "$${QMAKE_POST_LINK})
message($${TARGET}": ""CONFIG = "$${CONFIG})
message($${TARGET}": ""DEFINES" = $$DEFINES )
message($${TARGET}": DESTDIR = "$${DESTDIR})
message($${TARGET}": DEPENDPATH = "$${DEPENDPATH})
message($${TARGET}": OBJECTS_DIR = "$${OBJECTS_DIR})
message($${TARGET}": MOC_DIR = "$${MOC_DIR})
message($${TARGET}": UI_DIR = "$${UI_DIR})
message($${TARGET}": RCC_DIR = "$${RCC_DIR})
message($${TARGET}": LIBS_OUTPUT_PATH = "$${LIBS_OUTPUT_PATH})
#CONFIG+=dll
message("------$${TARGET}": "finish------------------------------------------")
exists($$PWD/COperationRecord.cpp) : exists($$PWD/COperationRecord.h) : {
HEADERS += \
$$PWD/COperationRecord.h
SOURCES += \
$$PWD/COperationRecord.cpp
}