`
tcspecial
  • 浏览: 911476 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QT pro自动化编译

阅读更多

     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
} 

 

分享到:
评论

相关推荐

    Qt Pro转CMakeLists

    **Qt Pro转CMakeLists详解** ...通过Python脚本自动化这一过程,能够有效地减少手动工作,确保转换的准确性和一致性。理解这个过程和CMake的使用,对任何Qt开发者来说都是提升效率和适应性的重要技能。

    Qt的pro文件转VS的工程文件

    qmake是Qt自带的一个自动化构建工具,它可以读取.pro文件并生成特定构建系统的脚本或项目文件。例如,在Unix系统上,qmake可以生成Makefile;而在Windows环境下,可以通过qmake生成Visual Studio的项目文件。 ### ...

    QT跨目录编译及多工程集成(动态库的创建、引用及工程间相互依赖关系的pro文件编写方法)

    `*.pro`文件是用QMake语言编写的,这是一种简单的Makefile生成器,能够自动处理编译和链接过程。 1. **动态库的创建**: 在Qt中,我们可以通过在pro文件中定义相关变量来创建动态库。例如,添加以下代码来创建一个...

    反编译工具IDA Freeware 7.6以及Qt5 程序初步逆向分析+解析脚本

    4. **编写脚本**:通过IDA的Python API编写自定义脚本,自动化某些分析任务,如查找特定模式或计算数据依赖。 对于Qt5程序,还可能涉及到元对象系统(Meta-Object System)的逆向。这包括理解类的元信息、信号与槽...

    qt for windows版本下编译qtdbus模块

    - 为简化操作流程,可以适当编写批处理文件来自动化部分操作,如启动 Windbus 服务等。 - 在实际部署应用时,需要注意将所有依赖库文件正确放置,以避免运行时出现问题。 通过以上步骤,我们不仅成功在 Windows ...

    Qt程序自动寻找依赖的动态库

    1. **创建QtQuickApplication项目**:同样在Qt Creator中创建一个`QtQuickApplication`项目,使用默认模板进行初始化。这里假设项目名为`helloqml`。 2. **编译生成exe文件**:与前面的步骤相同,选择Release模式...

    android Qt 编译

    本文将详细介绍Qt for Android的编译过程以及如何将项目打包成APK。 首先,确保你已经安装了以下必要组件: 1. **Java Development Kit (JDK)**:Qt for Android需要JDK来编译和运行应用程序。请确保安装了JDK 8或...

    有关qt的pro文件

    开发者可以根据项目特性灵活地扩展和定制.pro文件,以实现自动化构建和管理。 通过理解并熟练掌握.pro文件的配置,Qt开发者可以更高效地管理项目,确保代码在不同环境下的正确编译和运行。对于初学者而言,了解.pro...

    qtcreator mingw32编译的opencv3.3.0

    1. **CMake**: CMake是一个开源的跨平台自动化构建系统,用于管理软件构建过程。你需要下载并安装最新版本的CMake,以便配置和生成OpenCV项目。 2. **Qt Creator**: 作为IDE,Qt Creator不仅支持Qt应用程序的开发,...

    qjson使用qt编译

    Qt Creator会自动执行编译、链接等步骤,生成相应的库文件。 5. **集成到你的项目**: 如果你想在自己的Qt应用中使用编译好的qjson库,你需要将它添加为依赖。在你的项目`.pro`文件中,添加如下行: ``` LIBS +=...

    linux QT 自动生成.h和.cpp文件的编译脚本程序

    在Linux环境下,使用QT...总的来说,这个脚本是Linux和QT开发结合的一个实例,体现了自动化和定制化在提高开发效率方面的价值。通过掌握这样的脚本编写技巧,开发者能够更好地适应和驾驭QT开发环境,从而提升工作效率。

    Qt Pro 文件说明

    通过`.pro`文件,开发者能够灵活地配置源文件、头文件、编译器选项等,从而使得项目的构建过程更加自动化、标准化。本文将详细介绍`.pro`文件中各个配置项的意义及其用法,并给出一个简单的示例来帮助理解。 #### ...

    构建Docker Debian QT编译环境.docx

    构建 Docker Debian QT 编译环境 在本文中,我们将构建一个 Docker Debian QT 编译环境,以便更好地开发和测试 QT 应用程序。下面是我们将要讨论的知识点: 1. Docker 基础知识 在开始构建 Docker Debian QT 编译...

    QT数据库加密,编译后生成QT的库,可直接使用

    2. 配置文件:用于编译和链接加密库的配置文件,如.pro或CMakeLists.txt。 3. 依赖库:可能包含了加密算法所需的库,如OpenSSL。 4. 编译脚本:用于构建和安装加密插件的批处理或shell脚本。 5. 示例程序:演示如何...

    基于QT的自动关机的工具

    5. **ShutdownOntime.pro**: 这是QT的项目配置文件,定义了项目依赖、编译选项、目标平台等信息。在QT Creator中,开发者会使用这个文件来构建和调试应用。 6. **.qmake.stash**: 这个文件是QT的内部缓存,包含了...

    Qt之国际化

    5. **qmake和.pro文件**:在项目配置文件`.pro`中,你需要添加相应的编译指令,确保在编译过程中`lupdate`和`lrelease`工具被正确调用,生成和更新翻译文件。 6. **多语言切换**:在应用中,可以通过`QApplication:...

    qt5.2.0编译boost库文件

    保存`.pro`文件后,Qt Creator会自动重新加载项目设置。现在你可以在项目中自由地使用Boost库的功能了。例如,要使用Boost.Thread,你可以像下面这样编写代码: ```cpp #include int main() { boost::thread t([]...

    已经编译过的QWT的dll及lib,VS2010+QT5.4平台,QWT6.1.2

    3. 在你的Qt项目.pro文件中,添加QWT库的路径以及相应的编译标志,例如: ```pro INCLUDEPATH += path/to/qwt/inc LIBS += -Lpath/to/qwt/lib -lqwt ``` 其中,`path/to/qwt/inc` 和 `path/to/qwt/lib` 需要...

    qt联合halcon视觉流程框架 正常编译 测试正常 qt5.12.4

    为了测试应用程序的正确性,可以编写自动化测试用例。根据提供的文件名“联合视觉流程框架正常编译测试正.txt”,可能包含了一些测试步骤或预期的结果。在实际测试时,可以模拟不同输入情况,验证视觉流程的准确性和...

Global site tag (gtag.js) - Google Analytics