【问题标题】:Processing of Q_OBJECT in legacy non qmake build?在遗留的非 qmake 构建中处理 Q_OBJECT?
【发布时间】:2019-01-19 00:28:37
【问题描述】:

我有一个不使用 qmake 的旧版本,但我想添加 QUdpSocket 并将其与信号和插槽连接。我有一个使用 Q_OBJECT 的类。如果我希望信号和插槽可用但我没有使用 qmake,我需要做什么才能正确处理 Q_OBJECT 指令。

我可以用“$moc myclass.h”的输出替换原来的 myclass.h 文件吗?还是原文件之外的输出?

这可能是新的 make 指令吗?

m_myclass.h : myclass.h
    moc myclass.h > m_myclass.h

【问题讨论】:

  • 使用 cmake 代替 qmake
  • @eyllanesc:每天都在使用 CMake,如果我们谈论的是简单的 Qt 项目,我会随时使用 qmake 而不是 cmake - 它更简单(= 可能出错的东西更少) 并与 Qt 工具更好地集成。
  • @MatteoItalia 我并不是说 cmake 比 qmake 更简单或更可靠,但 cmake 是一个不错的选择,但手动实现 makefile 比 qmake 或 cmake 重。
  • @eyllanesc:这是肯定的!

标签: c++ qt makefile


【解决方案1】:

MOC 实际上会生成 .cpp 文件以与项目的其余部分一起编译;所以,这更像是:

moc_myclass.cpp: myclass.h
    moc myclass.h > moc_myclass.cpp

moc_myclass.o: moc_myclass.cpp
    g++ ${CFLAGS} moc_myclass.cpp -o moc_myclass.o // whatever

然后将moc_myclass.o 添加到最终可执行文件的链接步骤中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2011-08-02
    • 2019-08-13
    相关资源
    最近更新 更多