moc在Docker容器中使用Qt 5.10的“未定义接口”失败

问题描述 投票:1回答:2

一个非常简单的Qt项目无法使用Qt 5.10在Docker容器中构建(具有从opensuse:tumbleweed派生的图像)。该项目如下:

sh-4.4# cat test.pro
TEMPLATE = app
TARGET = test
INCLUDEPATH += .
INCLUDEPATH += sub
HEADERS = obj.h sub/iface.h
SOURCES = obj.cpp main.cpp

sh-4.4# cat sub/iface.h
#pragma once

#include <QtPlugin>

class Interface
{
public:
        virtual ~Interface () {}
};

Q_DECLARE_INTERFACE (Interface, "org.meh.interface/1.0")

sh-4.4# cat obj.h
#pragma once

#include <QObject>
#include <sub/iface.h>

class Obj : public QObject
{
        Q_OBJECT
        Q_INTERFACES (Interface)
};

sh-4.4# cat obj.cpp
#include "obj.h"

sh-4.4# cat main.cpp
int main() {}

在这种情况下,moc抱怨如下:

obj.h:9: Error: Undefined interface

在Qt 5.9的另一个容器中一切都很好,当项目在openSUSE Build Service(使用其他东西而不是Docker)中构建时,Qt 5.10的一切都很好。一些快速谷歌搜索没有透露最近的Qt版本的任何相关的bug报告。

可能有什么不对?

qt docker
2个回答
0
投票

在strace下运行moc显示Operation not permitted在各种statx调用,这揭示了它为什么失败(也与this问题有关)。 This拉请求有望解决这个问题。


0
投票

您是否尝试使用--privileged运行容器(请参阅Which capabilities are needed for statx to stop giving EPERM)?

© www.soinside.com 2019 - 2024. All rights reserved.