一、属性 qmake 有一个持久化配置系统,它允许在 qmake 中设置一次属性,并在每次调用 qmake 时查询它。...可以在 qmake 中设置一个属性: qmake -set PROPERTY VALUE 您可以从 qmake 检索此信息,如下所示: qmake -query PROPERTY qmake....version 变量来查询 Qt 模块特定的版本号 二、QMAKESPEC qmake 需要一个平台和编译器描述文件,其中包含许多用于生成适当 Makefile 的默认值。...QMAKESPEC 环境变量可以包含以下内容: 包含 qmake.conf 文件的目录的完整路径。在这种情况下,qmake 将从该目录中打开 qmake.conf 文件。...如果文件不存在,qmake 将退出并报错。 平台编译器组合的名称。在这种情况下,qmake 将在 Qt 编译时指定的数据路径的 mkspecs 子目录指定的目录中搜索。
通过配置项目文件控制编译器分类生成中间文件,中间文件较多时作用较大。 DESTDIR 设置执行文件的输出目录,如(.exe文件)。 OBJECTS_DIR 设置编译时生成的中间代码文件路径。...MOC_DIR 设置编译时生成moc文件的路径。 注:所有QObject派生的类都会生成moc。 RCC_DIR 设置编译时资源文件的路径。...注:把图片放到qrc里面,使用编译器生成qrc_xxx.cpp文件。 UI_DIR 设置编译时ui界面文件的路径。...注:如存在xxx.ui文件则编译器生成名为ui_xxx.h文件 qmake分类语句 build_type = CONFIG(debug, debug|release) { build_type
由于qmake manual和overview 两章的内容都不多就把它们放在一起翻译了出来 qmake 指南 qmake 是帮助简化跨平台项目开发的构建过程的工具,qmake能自动生成Makefile...工程文件是被程序员创建的,通常都很简单,但是复杂的工程会创建复杂的工程文件 qmake包含额外的功能支持Qt的开发,自动包含moc和uic的编译规则。 ...Function Library 上边这些是原文的连接,我会一一翻译过来下面是第一章内容 概述的翻译 概述 overview qmak tool 工具提供给你一个管理应用程序,库,或者其它组件编译过程的导向系统...qmake 扩展每一个项目文件里的信息到makefile,用于执行编译和连接所必须的命令。...使用第三方库 Third Party Libraries指南为你展示如何在你的项目中使用简单的第三方库 预编译头文件 在大项目中,有可能会利用预编译头来提高构建过程。
记录QMake宏定义的使用。...+= DEBUG 使用: #ifdef DEBUG qDebug() Debug<"; #endif // output: >Debug< 定义宏值(带双引号字符): # QMAKE_COPY...=> cp DEFINES += "COPY_CMD_LINE=\"\\\"$$QMAKE_COPY\\\"\"" 使用: qDebug() << COPY_CMD_LINE; // output
文章目录 简单介绍下qmake 简要介绍 关于pro文件 构建一个项目 使用第三方库 预编译头文件 让我们开始试试吧 从一个简单的例子开始 允许程序可以Debug 添加特定平台的源文件 设置当文件不存在的时候就停止...而且这一过程都在编辑一个文件来实现,qmake将每一个项目文件中的信息展开成一个Makefile,这一步是在编译和连接过程中必须的 关于pro文件 项目是pro文件所描述的,qmake使用这个文件中的信息来构建每一个项目...qmake来生成makefile,你可以运行你的平台构建构工具通过makefile来构建项目 使用第三方库 Thrid Party Libraries显示了如何使用简单的构建第三方库 预编译头文件 在大型的项目中...,你可以设置预编译头文件来提高项目的编译速度,详细的请看 Using Precompiled Headers 让我们开始试试吧 这个教程将叫你qmake的基础,下面的几个子章节将简单介绍下qmake的用法...模板 qmake输出 app(默认) 生成一个应用 lib 生成一个库 aux 不构建任何东西,当我们没有编译器的时候,或者解释语言的时候使用这个选项 subdirs MakeFile包含由SUBDIRS
罗列了一些Qt君常用到的qmake隐藏变量,因为这些变量没有写入到Qt官方的qmake文档中,意味着后续版本中说不能用就不能用了,只是做参考用。...unix是斜杠/ QMAKE_QMAKE qmake执行文件的绝对路径 *.pro项目文件,在Qt 5.12.2看到已是公开变量 一些跨平台命令 变量 含义 命令对照(win平台) QMAKE_CHK_DIR_EXISTS...检查目录是否存在的命令 if not exist QMAKE_COPY 复制文件命令 copy /y QMAKE_COPY_FILE 复制文件命令 copy /y QMAKE_COPY_DIR 复制目录命令...xcopy /s /q /y /i QMAKE_DEL_DIR 删除目录命令 rmdir QMAKE_DEL_FILE 删除文件命令 del QMAKE_MKDIR 创建目录命令 mkdir QMAKE_MOVE...移动或重命名文件或目录命令 move 获取Qt有关信息的变量 获取到当前使用到的Qt或QMAKE的一些信息(版本,执行文件路径,编译器路径等)。
一些项目开发中用到的qmake实用变量。...计算机架构 QMAKE_HOST.os 计算机系统 QMAKE_HOST.cpu_count 计算机CPU核心数 QMAKE_HOST.name 计算机名 QMAKE_HOST.version 系统版本...(数字形式) QMAKE_HOST.version_string 系统版本(字符串形式) QMAKE_PRE_LINK 编译链接前自动执行命令(注意不是编译前) QMAKE_POST_LINK 编译链接后自动执行命令...QMAKE_HOST.version_string) # 系统版本(字符串形式) QMAKE_PRE_LINK += echo 'Start Build...' # 编译链接前自动执行命令 QMAKE_POST_LINK += echo 'Build Success.' # 编译链接后自动执行命令 输出 Project MESSAGE: MyApp Project
qmake 有一个安装集的概念。...要生成的名为 mytarget 的目标 2、mytarget 是名为 .buildfile 的 Makefile 文件,该目标由 touch 命令生成(Linux touch命令),即运行 mytarget.commands...变量来指示 qmake 这个对象是要构建的目标: QMAKE_EXTRA_TARGETS += mytarget mytarget2 这就是实际构建自定义目标所需要做的全部工作。...如果明确启用跟踪,qmake 会在适当的情况下尝试跟踪库的依赖项。 第一步是在库本身中启用依赖项跟踪。....prl 文件应仅由 qmake 创建,不应在操作系统之间传输,因为它们可能包含平台相关信息。
1>Reading Qt configuration (D:/SoftWare/QT5.9.3/5.9.3/msvc2017_64/bin/qmake) 1>GHViewerDetect.vcxproj...: error : ERROR running qmake 1>GHViewerDetect.vcxproj : error : qmake: (D:/SoftWare/QT5.9.3/5.9.3/...msvc2017_64/bin/qmake) 1>GHViewerDetect.vcxproj : error : qmake: $PWD=D:\project\GHView\GHView\GHViewerDetect...\x64\Debug\qmake\temp 1>GHViewerDetect.vcxproj : error : qmake: Project ERROR: Unknown module(s) in...QT: networkauth 1>GHViewerDetect.vcxproj : error : qmake: Error creating Makefile 1>GHViewerDetect.vcxproj
以下选项仅在 Linux/Unix 平台上生效: largefile:包括对大文件的支持。 separate_debug_info:将库的调试信息放在单独的文件中。...56、QMAKE_CFLAGS_DEBUG 为调试版本指定 C 编译器标志。 57、QMAKE_CFLAGS_RELEASE 为发布版本指定 C 编译器标志。...71、QMAKE_CXXFLAGS_WARN_OFF 指定用于抑制编译器警告的 C++ 编译器标志。...72、QMAKE_CXXFLAGS_WARN_ON 指定用于生成编译器警告的 C++ 编译器标志。...这仅受某些平台(当前基于 Linux 和 Darwin 的平台)支持,并且可以通过检查是否设置了 QMAKE_REL_RPATH_BASE 来检测。
介绍些qmake使用频率较高的函数。
isEmpty(target.path): INSTALLS += target 上面代码的意思是,当部署项目(make install)时,如果是qnx平台则将编译输出文件复制到/tmp/$${...如果不是,则再次判断,如果是unix平台集但并不是andorid平台时则将编译输出文件复制到/opt/$${TARGET}/bin目录下。 该段代码是否可以删除?...QMake的unix:!android语句一般指的是arm平台。...QMake的INSTALLS变量描述: https://doc.qt.io/qt-5/qmake-variable-reference.html#installs
0x00 判断某个类型是否存在: 原型: defined(name[, type]) type 含义 test 检查测试函数 replace 检查代替函数 va...
用 cmake 构建Qt工程(对比qmake进行学习) cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能...参考:浅谈 qmake 之 shadow build) 为各种平台和场景提供条件编译 可处理多个可执行文件情况,和很好配合 QtTest 工作 如何选择?...; app.exec(); } 如果不使用构建工具,直接调用编译器来编译的话,只需要类似这样的一条命令: g++ main.cpp -Ie:\Qt\4.7.0\include -o main...mainwindow.ui -o ui_mainwindow.h mainwindow.h 需要 moc 预处理 moc mainwindow.h -o moc_mainwindow.cpp 调用编译器进行编译...使用时,可以直接 make release 或 make debug 来编译不同的版本 cmake 不同于 qmake,由于 cmake 采用 out-of-source 方式。
Qmake的TEMPLATE变量用来设置Qt项目的构建类型。
前言 在linux环境下进行程序开发时,经常需要使用makefile管理编译代码,特别是一些大型工程,而makefile工具语法晦涩深入研究较为困难,好在有很多工具可以自动生成makefile,qmake...#Linux系统 QMAKE_CXXFLAGS += -fPIC QMAKE_LFLAGS_DEBUG += -L$$PWD/../...../ThirdPartyLib/openrave-0.9/lib #相对路径是相对工程文件pro的路径 编译时静态链接 # QMAKE_LFLAGS += -Wl,-rpath=../../../.....可以使用qmake -h查看具体的说明 qmake生成makefile 调试经验 在linux平台下可以用ldd命令查看so库所依赖的其他so库,readelf -d libxxx.so | grep...rpath查看xxx.so配置的依赖库的链接路径 qt如果勾选编译的shadow路径,那么生成的系列文件将不按照pro文件生成,而是生成在shadow路径 发布者:全栈程序员栈长,转载请注明出处:https
由于Qt的跨平台,其对应的编译配置工具QMake也是跨平台,这意味着QMake语法关键词大部分使用到的东西都是跨平台的。 利用QMake跨平台特性整理出一些跨平台系统命令。...如下表(windows平台): 关键词 命令 含义 QMAKE_CHK_DIR_EXISTS if not exist 检查目录是否存在 QMAKE_COPY copy /y 复制文件 QMAKE_COPY_FILE...copy /y 复制文件 QMAKE_COPY_DIR xcopy /s /q /y /i 复制目录 QMAKE_DEL_DIR rmdir 删除目录 QMAKE_DEL_FILE del 删除文件...QMAKE_MKDIR mkdir 创建目录 QMAKE_MOVE move 移动/重命名
在我们编译别人发送的项目时,有时候会出现qmake编译失败的情况,那怎么办?
在qt/mkspecs中的每一个目录里面,都有一个包含了平台和编译器特定信息的qmake.conf文件。这些设置适用于你要使用qmake的任何项目,请不要修改它,除非你是一个专家。...CONFIG变量 配置变量指定了编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别。...下面这些选项控制着使用哪些编译器标志: release - 应用程序将以release模式连编。如果“debug”被指定,它将被忽略。 debug - 应用程序将以debug模式连编。...warn_on - 编译器会输出尽可能多的警告信息。如果“warn_off”被指定,它将被忽略。 warn_off - 编译器会输出尽可能少的警告信息。...就不能正确使用连编Qt的设置了,比如没法获得所编译的Qt库的类型了。
领取专属 10元无门槛券
手把手带您无忧上云