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详解** ...通过Python脚本自动化这一过程,能够有效地减少手动工作,确保转换的准确性和一致性。理解这个过程和CMake的使用,对任何Qt开发者来说都是提升效率和适应性的重要技能。
qmake是Qt自带的一个自动化构建工具,它可以读取.pro文件并生成特定构建系统的脚本或项目文件。例如,在Unix系统上,qmake可以生成Makefile;而在Windows环境下,可以通过qmake生成Visual Studio的项目文件。 ### ...
`*.pro`文件是用QMake语言编写的,这是一种简单的Makefile生成器,能够自动处理编译和链接过程。 1. **动态库的创建**: 在Qt中,我们可以通过在pro文件中定义相关变量来创建动态库。例如,添加以下代码来创建一个...
4. **编写脚本**:通过IDA的Python API编写自定义脚本,自动化某些分析任务,如查找特定模式或计算数据依赖。 对于Qt5程序,还可能涉及到元对象系统(Meta-Object System)的逆向。这包括理解类的元信息、信号与槽...
- 为简化操作流程,可以适当编写批处理文件来自动化部分操作,如启动 Windbus 服务等。 - 在实际部署应用时,需要注意将所有依赖库文件正确放置,以避免运行时出现问题。 通过以上步骤,我们不仅成功在 Windows ...
1. **创建QtQuickApplication项目**:同样在Qt Creator中创建一个`QtQuickApplication`项目,使用默认模板进行初始化。这里假设项目名为`helloqml`。 2. **编译生成exe文件**:与前面的步骤相同,选择Release模式...
本文将详细介绍Qt for Android的编译过程以及如何将项目打包成APK。 首先,确保你已经安装了以下必要组件: 1. **Java Development Kit (JDK)**:Qt for Android需要JDK来编译和运行应用程序。请确保安装了JDK 8或...
开发者可以根据项目特性灵活地扩展和定制.pro文件,以实现自动化构建和管理。 通过理解并熟练掌握.pro文件的配置,Qt开发者可以更高效地管理项目,确保代码在不同环境下的正确编译和运行。对于初学者而言,了解.pro...
1. **CMake**: CMake是一个开源的跨平台自动化构建系统,用于管理软件构建过程。你需要下载并安装最新版本的CMake,以便配置和生成OpenCV项目。 2. **Qt Creator**: 作为IDE,Qt Creator不仅支持Qt应用程序的开发,...
Qt Creator会自动执行编译、链接等步骤,生成相应的库文件。 5. **集成到你的项目**: 如果你想在自己的Qt应用中使用编译好的qjson库,你需要将它添加为依赖。在你的项目`.pro`文件中,添加如下行: ``` LIBS +=...
在Linux环境下,使用QT...总的来说,这个脚本是Linux和QT开发结合的一个实例,体现了自动化和定制化在提高开发效率方面的价值。通过掌握这样的脚本编写技巧,开发者能够更好地适应和驾驭QT开发环境,从而提升工作效率。
通过`.pro`文件,开发者能够灵活地配置源文件、头文件、编译器选项等,从而使得项目的构建过程更加自动化、标准化。本文将详细介绍`.pro`文件中各个配置项的意义及其用法,并给出一个简单的示例来帮助理解。 #### ...
构建 Docker Debian QT 编译环境 在本文中,我们将构建一个 Docker Debian QT 编译环境,以便更好地开发和测试 QT 应用程序。下面是我们将要讨论的知识点: 1. Docker 基础知识 在开始构建 Docker Debian QT 编译...
2. 配置文件:用于编译和链接加密库的配置文件,如.pro或CMakeLists.txt。 3. 依赖库:可能包含了加密算法所需的库,如OpenSSL。 4. 编译脚本:用于构建和安装加密插件的批处理或shell脚本。 5. 示例程序:演示如何...
5. **ShutdownOntime.pro**: 这是QT的项目配置文件,定义了项目依赖、编译选项、目标平台等信息。在QT Creator中,开发者会使用这个文件来构建和调试应用。 6. **.qmake.stash**: 这个文件是QT的内部缓存,包含了...
5. **qmake和.pro文件**:在项目配置文件`.pro`中,你需要添加相应的编译指令,确保在编译过程中`lupdate`和`lrelease`工具被正确调用,生成和更新翻译文件。 6. **多语言切换**:在应用中,可以通过`QApplication:...
保存`.pro`文件后,Qt Creator会自动重新加载项目设置。现在你可以在项目中自由地使用Boost库的功能了。例如,要使用Boost.Thread,你可以像下面这样编写代码: ```cpp #include int main() { boost::thread t([]...
3. 在你的Qt项目.pro文件中,添加QWT库的路径以及相应的编译标志,例如: ```pro INCLUDEPATH += path/to/qwt/inc LIBS += -Lpath/to/qwt/lib -lqwt ``` 其中,`path/to/qwt/inc` 和 `path/to/qwt/lib` 需要...
为了测试应用程序的正确性,可以编写自动化测试用例。根据提供的文件名“联合视觉流程框架正常编译测试正.txt”,可能包含了一些测试步骤或预期的结果。在实际测试时,可以模拟不同输入情况,验证视觉流程的准确性和...