QT的pro文件为工程自动化跨平台编译提供了便利,可以直接通过qmake生成Makefile文件,windows执行nmake,linux下执行make即可完成整个项目的编译
1. 项目列表pro
TEMPLAET = subdirs # 子项目列表,默认*.pro与工程名一致 SUBDIRS = auth_interface \ alm_jna_dll \ auth_service \ sdbview \ stat_service \ dualswitch # 当*.pro与工程名不一致,通过file属性指定 data_engine.file = data_engine/data_engine_qt4.pro auth_interface.file = auth_interface/auth_interface_qt4.pro
2. pro详细配置
2.1 配置文件生成目录
编译过程中会产生moc_*.cpp(moc文件),ui_*.h(ui编译文件),*.obj等中间文件,默认是生成在当前目录,可以通过MOC_DIR,OBJECTS_DIR,UI_HEADERS_DIR,RCC_DIR属性指定
2.2 配置生成后事件
QMAKE_POST_LINK可以指定生成后事件: QMAKE_POST_LINK += copy debug\\*.exe ..\dist. 当有多个QMAKE_POST_LINK时你会发现拷贝会出错,打开VS10发现,多个拷贝命令没有被分隔开
解决方案: 在每条命令后加上$$escape_expand(\\n\\t) 即可
QMAKE_POST_LINK += $$quote(copy /y $$MYDIR\\*.lib $$AIMDIR $$escape_expand(\\n\\t))
QMAKE_POST_LINK += $$quote(copy /y $$MYDIR\\*.dll $$AIMDIR $$escape_expand(\\n\\t))
但是这种方式只能被VS10识别,vc6下无法正常工作, 通用解决方案: 多条拷贝命令以&&连接即可
详见如下pro:
TEMPLATE = lib INCLUDEPATH +=. DEPENDPATH += . HEADERS += SORUCES += main.cpp MYDIR = ..\\dist\\debug # 变量MYDIR指定目标文件生成目录 DESTDIR = $$MYDIR # 目标文件目录 MOC_DIR = $$MYDIR # moc_*.cpp生成目录 OBJECTS_DIR = $$MYDIR # *.obj文件生成目录 RCC_DIR = $$MYDIR # 资源文件qrc_*.cpp生成目录 UI_HEADERS_DIR = $$MYDIR # UI文件(ui_*.h) 生成目录 win32{ DEFINES += WIN32 # 对于vc6下编译,nmake不会主动包含WIN32系统宏,需要手动定义 QMAKE_LFLAGS += /stack:0x800000 // 设置堆栈空间大小 QMAKE_POST_LINK = copy /y $$MYDIR\\*.lib $(QTDIR)\\lib && copy /y $$MYDIR\\*.dll $(QTDIR)\\bin #拷贝多个文件,以&&连接 }else{ #linux平台 QMAKE_POST_LINK = cp -rf $$MYDIR/*.so* $(QTDIR)/lib }
2.3 条件编译
如何在pro定义很多选项开关,进行选择性编译? qmake提供很多功能强大的内置函数和变量,为动态编译项目提供了便利
方式一: contains()
contains 函数用于检测变量是否包括该值
DEFINES += USE_QT4 #判断DEFINES是否包含USE_QT4宏, 注: contains() 与 { 必须在同一行,否则出错 contains(DEFINES,USE_QT4){ LIBS += -lmydll_qt4 }else{ LIBS += -lmydll }
方式二: CONFIG
CONFIG 变量用于指定工程配置和编译器选项,通常取debug,release,dll等值,也可以自定义选项值; CONFIG变量的每个选项都可以用于条件判断
CONFIG += qt4 qt4{ LIBS += -lmydll_qt4 }else{ LIBS += -lmydll }
相关推荐
Qt5编译懒人包,参考readme。VS2008编译参考:http://blog.csdn.net/phil2036/article/details/20409535
在window下编写qt程序(helloworld.pro),在linux下编译helloworld.pro,生成可执行文件并上传至树莓派上运行
网上大多都是Windows下的QT MQTT编译安装方法,Linux下有些不同,此文件是关于UBuntu和ARM Linux下QT MQTT库的编译安装详细步骤 -------------------------------------------------------- Linux版本:UBuntu 16.04...
qt5.12.0静态资源包,不支持directx 12版本....就是静态编译出来会将相关用到的qt核心依赖库随编译一起打包出来一个exe文件,无需引入qt core等dll。动态编译要手东windeoloy ,体积几百M,静态编译只需要10M不到
刁肥宅自己编译的Qt 5.7.0的静态编译库,亲测用这个库编译的exe程序,不需要任何dll和其他附加文件便可以在不带Qt环境的电脑上运行。
QT发布的QtWebEngine,默认不支持视频和音乐播放,需用源码自行编译。 但编译过程存在很多坑儿和条件限制,例如:编译环境和条件差异、硬件限制(内存16G以上、几十G的大存储空间)、编译耗时(6小时以上,还是在...
Qt6.22 Mingw64静态编译
ARM64下QT需要用到QWebEngine模块,网上很多资源交叉编译QT时,均默认跳过此步骤,没跳过此步骤的很多未能详细提供交叉编译webengine模块所依赖的库,导致此模块无法交叉编译通过,资源中包含了arm64下交叉编译的...
现在QT在线安装只有QT6.2以上的版本和QT5.15,其他版本就需要自己编译,本文讲解在vs2019环境下编译qt6.1.3源码。
qt vs2013 静态配置参数 configure -confirm-license -opensource -platform win32-msvc2013
QT 编译QT4 VC2005 QT4 VC2005 编译 详解编译 详解QT4 VC2005 编译 详解
编译运行Qt连接MySQL数据库程序的时候,控制台会报如下错误:QSqlDatabase: QMYSQL driver not loaded,原因在于Mysql驱动libqsqlmysql.so未能成功安装,linux版本下只安装了sqlite驱动,Mysql驱动需根据安装数据库...
QtXlsx开源库 编译好的静态库lib和动态库dll win7 下 vs2010+qt5.5 使用QtXlsx开源库
简单介绍如何在Ubuntu下进行Qt的静态编译,并用编译出来的静态库编译我们的程序
可以学习Qt多pro和pri的编写方法以及动态库的创建、引用及工程间相互依赖关系的pro文件编写方法
Qt 6.2.2 版本下编译的postgresql 14 驱动, 解压压缩包内的文件,拷贝到你的exe程序目录
loongson 平台上 使用buildroot交叉编译Qt5,也可以编译Qt 4.8,最后会生成一个可用于loongson平台的文件系统。
Qt 5.15.2 MinGW81 静态编译 release +编译方法 和编译时要注意的事项 。Qt 5.15 以后就需要自己编译了。
极限静态精简编译的Qt,使用VC6编译器,编译生成的EXE大小只有2.2M未压缩,Qt4.5.3的功能已基本够用,可用以制作小程序,安装包等
Qt4安装与编译方法