首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不使用Qt模块的qmake项目中使用moc?

在不使用Qt模块的qmake项目中使用moc,可以按照以下步骤进行:

  1. 确保已经安装了Qt开发工具包,并且环境变量已经正确配置。
  2. 在项目的.pro文件中添加以下内容,以启用moc预处理器:
代码语言:txt
复制
QT += core
  1. 在需要使用moc的头文件中,使用Q_OBJECT宏来标记需要被moc处理的类。例如:
代码语言:cpp
复制
class MyClass : public QObject
{
    Q_OBJECT
    // ...
};
  1. 在项目的.pro文件中,添加以下内容,以指定moc的输出文件:
代码语言:txt
复制
HEADERS += MyClass.h
  1. 在项目的.pro文件中,添加以下内容,以指定moc的编译规则:
代码语言:txt
复制
moc_headers.target = moc
moc_headers.commands = $$[QT_INSTALL_BINS]/moc $$moc_headers.input -o $$moc_headers.output
moc_headers.depends = $$moc_headers.input
moc_headers.input = HEADERS
moc_headers.output = $$OUT_PWD/moc_$$basename($$moc_headers.input).cpp
QMAKE_EXTRA_COMPILERS += moc_headers
  1. 在项目的.pro文件中,添加以下内容,以将moc的输出文件包含到编译过程中:
代码语言:txt
复制
SOURCES += $$OUT_PWD/moc_$$basename($$HEADERS).cpp
  1. 最后,重新运行qmake来更新项目文件,并进行编译。

这样,就可以在不使用Qt模块的qmake项目中使用moc了。

注意:以上步骤是基于使用qmake构建项目的情况,如果使用其他构建工具,步骤可能会有所不同。另外,由于不提及具体的云计算品牌商,无法给出腾讯云相关产品和产品介绍链接地址。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

qmake:配置qmake

.version 变量来查询 Qt 模块特定版本号 二、QMAKESPEC qmake 需要一个平台和编译器描述文件,其中包含许多用于生成适当 Makefile 默认值。...标准 Qt 发行版带有许多这样文件,位于 Qt 安装 mkspecs 子目录:D:\qt6.2\6.2.0\msvc2019_64\mkspecs)。...三、缓存文件 缓存文件是 qmake 读取特殊文件,用于查找未在 qmake.conf 文件、项目文件或命令行中指定设置。...如果 qmake 找到一个 .qmake.cache 文件,那么它会在处理项目文件之前先处理这个文件。 四、文件扩展名 在正常情况下,qmake 会尝试为当前平台使用适当文件扩展名。...例如,可以在项目文件中使用以下分配重新定义用于 moc 文件扩展名: QMAKE_EXT_MOC = .mymoc 以下变量可用于重新定义 qmake 识别的常见文件扩展名: QMAKE_EXT_MOC

2.6K10

Qt环境配置相关问题

Qt Pro文件 2.Qmake -tp vc重新生成VS项目工程 来构建MOC文件(但不一定生成此文件,只是在工程文件配置),用命令...moc文件系统默认输出到控制台,需要添加-o指定输出路径(moc *.h -o moc_*.cpp) QmakeQt项目构建工具,可以生成Project工程文件或makefile文件(和CMake...2.Qt Creator(推荐使用Qt4版本) 1.Qt Creator构建项目出现LNK1123: 转换到 COFF 期间失败错误:需要在pro文件添加...QMAKE_LFLAGS += /INCREMENTAL:no 2.Qt += 新添加模块qt assistant)出现Unknow Module in Qt错误:...Qt+=Widgets (检查大小写是否正确,或者是否存在该模块,需要修改成小写widgets) 3.Qt Creator快捷键设基本设置 ?

2.2K40

Hello Qt——QMake用户指南

工程文件包含一定数量不同元素,注释、变量声明、内置函数以及简单控制结构。在大多数简单工程,只需要声明使用简单配置选项构建工程源文件和头文件即可。...4、声明Qt库 如果CONFIG变量包含qtqmakeQt应用程序支持会开启,这会使微调应用程序Qt模块变得可能。用于声明需要扩展模块QT变量可以实现微调。...A、创建Visual Studio工程文件 使用Visual Studio编写Qt应用程序开发人员可以使用Qt商业版提供Visual Studio集成工具,而不必担心如何管理项目依赖关系。...下面是如何在工程文件定义唯一标识符。 支持IDS可用类型有四种:UID2、UID3、SID和VID。...注意,由于qmake读取工程文件方式,在工程文件内设置QMAKESPEC变量会没有效果。 QT QT变量存储值用于控制工程中使用Qt模块

5.5K20

Qmake VS Cmake

用 cmake 构建Qt工程(对比qmake进行学习) cmake vs qmake qmake 是为 Qt 量身打造使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来是强大功能...Using CMake to Build Qt Projects 一文说: 对简单Qt工程,采用 qmake 对复杂度超过 qmake 处理能力,采用 cmake 尽管如此,如果简单Qt工程都不知道怎么用...这是默认项,可直接去掉该行 启用qt后,可以通过 QT -= gui 来进一步细调我们需要模块 默认是 core gui。我们不需要gui模块,故去掉。...}) 需要 moc 文件,用 QT4_WRAP_CPP 处理 生成文件放入变量 example_MOCS ,最后一块链接到可执行程序 需要 uic 文件,用 QT4_WRAP_UI 处理...}) 对Qt资源文件,使用 QT4_ADD_RESOURCES 来调用rcc进行预处理 对 Windows 资源文件,直接和源文件一样,添加到列表即可。

1.1K10

make makefile cmake qmake都是什么,有什么区别?

5. cmake是抽象层次更高项目管理工具,cmake命令执行CMakeLists.txt文件 6. qmakeQt专用项目管理工具,对应工程文件是*.pro,在Linux下面它也会生成Makefile...如果GUI用了Qt,也可以用qmake+*.pro来管理工程,这也是跨平台。当然,cmake也有针对Qt一些规则,并代替qmake帮你将qt相关命令整理好了。...现在Qt还包含了开发各种软件一般需要用到功能模块(网络,数据库,XML,多线程啊等等),比你直接用C++(只带标准内裤那种)要方便和简单。...所以qmake就产生了。 14.qmake工具就是Qt公司制造出来,用来生成Qt 专用makefile文件,这种makefile文件就能自动智能调用moc和uic对源程序进行预处理和编译。...qmake 是为 Qt 量身打造使用起来非常方便,但是cmake功能比qmake强大。 一般Qt工程你就直接使用qmake就可以了,cmake强大功能一般人是用不到

2.1K10

QT(一).hello world(2)

qmake 生成 Qt 应用一般会经历如下三个步骤 qmake -project qmake make 那 qmake 是干什么用呢?...从 qmake --help 可以获知 QMake has two modes, one mode for generating project files based on some heuristics...but you may use this to test qmake on an existing project qmake 是用来干两件事 根据源码产生项目文件 *.pro 根据源码和项目文件产生...Makefile 一般而言对于一个新项目 第一步产生项目文件使用 -project 模式 第二步产生 Makefile 使用 -makefile 模式 ,但是这个模式是默认模式,不用加 -makefile...### Compile ####### Install [emacs@h102 hello]$ 头部信息 编译工具和选项 输出目录 文件 隐式规则 构建规则 子库 编译命令 安装 关于Makefile细节

96210

qmake手册(Qt5.9.3)

有关qmake在配置构建过程时使用环境变量更多信息,请参阅配置qmake使用第三方库 第三方库指南向你展示了如何在Qt项目使用简单第三方库。...HEADERS 构建项目使用头文件(.h)文件名列表。 QT 项目使用Qt模块列表。 SOURCES 将包含在最终项目资源(.qrc)文件列表。...您可以使用QT变量来控制应用程序所需其他Qt模块。这个值是默认添加,但是你可以删除它来为非Qt项目使用qmake。 x11 该项目是一个X11应用程序或库。如果目标使用Qt,则不需要此值。...这样可以调整应用程序使用哪个Qt模块。这是通过QT变量来实现,它可以用来声明所需扩展模块。...有关更多信息,请参阅表达支持iOS版本。 QT 指定您项目使用Qt模块。有关为每个模块添加值,请参阅模块文档。

5.4K20

ubantu16.04搭建Qt环境

/configure 配置过程:选择 o ;选择yes;后面回车,稍等片刻 编译原码 直接make编译原码 make #漫长等待 吐槽一下,编译了快一个小时,这是第三次配置qt环境 安装make sudo...-4.8.7/是我路径,你需要改成上一步记下路径 source /etc/profile #更新完之后颜色变灰了 cd ~ #回到用户目录 qmake -v #查看版本 QMake version...printf("\033[1;33mhello world\033[0m \n"); return 0; } 在Linux下gcc正常编译的话是 gcc main.c -o main 使用...演示 首先准备一个qt项目,将qt代码.h、.cpp、.ui文件移动到Linux下 ➜ work ls main.cpp mainwindow.ui Translate_CN.ts...-o moc_mainwindow.o moc_mainwindow.cpp g++ -m64 -Wl,-O1 -o work main.o mainwindow.o moc_mainwindow.o

2.1K30

翻译qmake文档(一) qmake指南和概述

无论是不是用Qt软件项目都可以使用qmake      qmak 根据工程文件内容来生成Makefile。...工程文件是被程序员创建,通常都很简单,但是复杂工程会创建复杂工程文件      qmake包含额外功能支持Qt开发,自动包含moc和uic编译规则。      ...这个方法能够控件源文件 使用,并允许在这个过程步骤被简单描述,通常这些描述会在一个文件里。qmake 扩展每一个项目文件里信息到makefile,用于执行编译和连接所必须命令。...选择项目模板,Qt Creator会创建一个有默认变量项目文件(.pro)允许你构建和运行项目.你可以根据你意图去修改项目文件(.Pro).      你也可以用qmake生成项目文件。...使用第三方库  Third Party Libraries指南为你展示如何在项目使用简单第三方库  预编译头文件      在大项目中,有可能会利用预编译头来提高构建过程。

1.5K70

Qt CMake怎能让我继续使用

正准备使用Qt库编译写好程序时,发现使用QMake编译不过了,报Qml缺少连接,最后询问了维护人员,是一个内部问题,还没有修改好,建议使用CMake编译,无奈将项目pro工程修改为CMake工程,如无意外就编译通过了...使用几天发现后,使用QtCreator支持Qt CMake工程,编译时间比QMake长,大约慢30%到50%时间,QtCreator卡顿频繁,在频繁读取文件,修改Qml文件后编译运行时间更长。...回想Qt 6.0更新时候都没有将全部Qt 5.15版本模块移植进来,搞了一个按揭移植,移植到Qt 6.4也没有完全移植完成,比如Location模块,文末有截图和访问链接证实。   ...QMake构建Qt源码实在太难扩展,但换做CMake构建的确是构建方便了,如果只为构建Qt源码方便,那大可不必将QMake项目切换到CMake项目,如果没接触过CMake工程师,贸然切换,只会徒增开发成本...这里不好是指Qt CMake不好,一堆moc,uic,qml代码生成管理工具,都通过CMake处理,目前看来是优化得不太好。

83720

VS2010编译Qt5.4.0静态库

当然,如果是程序员之间会比较方便,如果别人机子也安装了Qt,并且设置了环境变量,那么也可以不将公共DLL附在发布程序。但是,这样显然还是不方便。...运行: 看一下生成程序信息: 16、用VS打开项目 VS编译项目: 编译输出如下: 1>—— 已启动生成: 项目: StaticTest, 配置: Debug Win32 —...1> 1>已用时间 00:00:05.15 ========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ========== 注意:此时用VS生成项目还是用动态库,因为未将静态库添加到...VS。...同上方法,将编译好静态库也添加到VS设置Qt版本: 然后,右键项目Qt Project Settings 编译: 1>—— 已启动生成: 项目: StaticTest

24010

Qt高级——QMake快速入门

qmake是一个用来简化在不同平台间开发工程构建过程工具。qmake会自动生成MakeFile文件,可以用于任何软件项目中,无论是否由Qt编写。...qmake会注意所有的编译器和平台依赖性,开发者只需关注自己代码。qmake作为Qt库和Qt所提供工具主要连编工具,可以自动包含moc和uic连编规则。...,工程文件是hello.pro,Windows平台目标名称是hello.exe,Unix平台目标名称是hello。如果要使用不同目标名称,需要在工程文件hello.pro设置。...: TARGET = helloworld 最后就是配置CONFIG变量,对于Qt应用程序来说,给CONFIG赋值qtQMake会链接相关库,并确保moc和uic相关连编规则生成到MakeFile...CONFIG += qt warn_on release 对于单个值数据项,模板或目的目录,使用“=”,但多个值数据项需要使用“+=”增加到已经存在相应类型数据项

1.4K21

Qt中常见错误

valueChanged()函数有两个重载,那么我们在使用这个信号时候就需要使用一个函数指针明确指向其中一个函数。...没有执行qmake 有时候会出现一些未定义,或者引用错误。这时候你可能就需要qmake一下。这样就不会有错误了。例如我新建了一个类,这个类没有继承自 ? 这些类。即使你加上了Q_OBJECT宏。...你在编译时候仍会遇到error: undefined reference to `vtable for xxxx'。这个时候你就需要手动qmake一下。右键你项目,执行qmake。 ?...把宏Q_OBJECT写在了CPP文件 Qtmoc会自动处理包含Q_OBJECT头文件,并且只处理头文件。因此你把Q_OBJECT写在了CPP文件之中。...可能就会遇到这样一个错误:“找到一个或多个多重定义符号”。在Qt,也不应该把使用Qt提供函数实现放在头文件。这样由于moc处理也会引起错误。

70120

QT(二).计算器(2)

UTF-8,但是在Qt内部,其实还是使用Unicode进行存储 app.setFont(QFont("simsun", 10)); //设定字体 Calc c; //定义一个Calc类对象,这个类在...return app.exec(); //进入主事件循环,这是应用逻辑进入点 } calc.h #ifndef CALC_H //这个条件编译是一种很好编程习惯,加强了代码健壮性,在大项目中可以有效避免冲突...,这个后面交代 { Q_OBJECT //这个宏不可或缺,否则这个类无法使用QTsignal和slot机制 public: Calc(QWidget *parent = 0); //构造函数...,代表这是一个新窗口 { setupUi(this); //这个函数是Ui_Calc类一个内联函数,用来设置自身界面布局和组件分布,还有组件和窗口形状大小和位置,参数信息来源于之前使用designer...|->calc calc.h->moc_calc.cpp->moc_calc.o--| 依赖关系 从源码依赖关系可知 [emacs@h102 calc]$ grep include main.cpp

98520

qtqmake详解

.通常是库形式,跟普通库一样VERSION 变量是用来指定一些有关插件信息 VERSION – 目标库版本号, 2.3.1 声明Qt模块 如果CONFIG变量包含了...qt这个值,表明qmake支持了qt程序,但是还需要调整一些你程序中使用qt 模块.这是使用QT变量,就能达到这个目的。...QT是用来声明使用一些额外模块.例如.通过下面的方法,我们使得XML和网络模块有效 CONFIG += qt QT += network xml...QT变量和CONFIG变量里面添加opengl选项 声明Qt模块 qmake可以通过专门prf文件设置另外配置特性.这些特性通常提供给编译时候自定义工具使用.为了在处理过程添加一个特性.../qt 实验2 本实验并没有用到上面所讲方式,而是直接使用了默认值,但是假设说该文件夹下有两个cpp文件,如下图 这时候再执行命令:qmake -project会怎么样呢?

2.5K40

QT5.6移植到ARM三星4412-

Qt完全面向对象、且模块化程度更高,易与扩展,并且允许真正组件编程。此外,Qt支持更多平台与丰富API,支持2D/3D 图形渲染、OpenGL、大量开发文档、XML等等。...一般来说,对于32位系统应用,兼容至Win10和WinRT直重新开发,但通过Qt,只需要对您应用做一个简单重新编译即可轻松实现。...另外,5.6在本次Win10全面支持还为MS Visual Studio2015提供了预设文件库,并将随着5.6.0发布更新其VS插件。...bin目录下存放了qmake命令。 1.2.9 添加环境变量 为了方便使用qmake命令,可以将bin目录加入到系统环境变量PATH。...该脚本只是用来方便移植使用,只需要在移植时候执行一次,以后就不需要再执行。 内容如下: #!

7.2K20

解决cpp添加QObject派生类问题

一般我们继承QObject类在头文件添加,但是有时候需要在源文件添加。这样就会不可避免地出现编译错误。那么我们该究竟怎么解决它呢?...moc工具不识别cpp导致。...由于moc工具不识别cpp文件中继承于QObject类,这样就不能自动为该类添加一些实现函数(元对象函数),就会导致函数未定义错误。...当qmake运行起来时,moc工具会自动识别处理头文件中所有继承于QObject类和一系列Qt元对象属性。 要想让moc识别cpp文件,只需要包含#include 当前文件.moc就可以了。...解决步骤(方法) 包含当前文件.moc到其类定义下或最后一行(注意:不能Object类先于定义); 清除项目->qmake->编译。

1.7K10
领券