首页 > 解决方案 > QGroundControl 在 Mac 上使用 Qt 构建

问题描述

您好我克隆了QGround Control的仓库(开源应用链接,但是Github上的版本不能用Qt编译,我使用支持上指定的5.12.6版本(链接),我选择的构建环境是Destop Qt 5.12。 6 clang 64bit 这里是错误(我认为错误来自 Qt Creator 的错误安装或设置):

Qt5.12.6/5.12.6/clang_64/lib/QtCore.framework/Headers/qvariant.h:399: error: definition of implicit copy assignment operator for 'Private' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy]
        inline Private(const Private &other) Q_DECL_NOTHROW
               ^

请注意,我使用的是 MacOs 11.2.3。

Qt creator 的版本:4.10.2 基于 5.13.2

标签: c++qtqt-creatorqgroundcontrol

解决方案


您在这里发生了几件事:

  1. 您正在使用更新的编译器进行编译,其中各种以前的犹太实践(例如声明复制构造函数而不声明赋值运算符)现在被认为已弃用,导致编译器发出有关它们的警告。

  2. 您正在使用 进行编译-Werror,这会导致编译器将所有警告视为错误。这与尚未更新为对最新且最强大的编译器友好并因此产生警告的 Qt 标头一起导致您的编译出错

我认为简单的解决方法是在项目设置中找到-Werror指定的位置,然后将其删除;那么代码应该(希望)编译成功,尽管编译器可能会发出任何警告。


推荐阅读