【问题标题】:How to execute a Qt app on macOS Terminal?如何在 macOS 终端上执行 Qt 应用程序?
【发布时间】:2020-08-23 11:00:29
【问题描述】:

当我在 QtCreator 上执行以下操作时,我确实看到屏幕上打印了 hello world。但是,如果我通过 open project.app 从终端执行它,则没有输出。为什么?可能是我执行的方式不对,那么如何在 macOS 终端上执行一个 Qt 应用呢?

main.cpp

#include <QCoreApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "hello world";
    return a.exec();
}

项目.pro

QT += core 
CONFIG += c++11 console app_bundle
SOURCES += main.cpp 

我尝试了以下方法,但看起来可能还有其他问题:

$ ./project.app/Contents/MacOS/project 
dyld: Library not loaded: @rpath/QtWidgets.framework/Versions/5/QtWidgets
  Referenced from: /Users/user/QtProjecs/project/./project.app/Contents/MacOS/project
  Reason: Incompatible library version: project requires version 5.13.0 or later, but QtWidgets provides version 5.7.0
Abort trap: 6

【问题讨论】:

    标签: c++ macos qt terminal qt-creator


    【解决方案1】:

    MacOS/X .app 文件夹将其可执行文件隐藏在 Contents/MacOS 子目录中,因此如果您想直接执行可执行文件并在终端中查看其输出,您可以这样运行:

     ./project.app/Contents/MacOS/project
    

    【讨论】:

    • 我试过了,将结果附加到问题中。关于我应该如何进行的任何想法?
    • 听起来你的程序是用一个版本的 Qt 构建的,但你的 shell 环境正试图从不同的版本加载 Qt 共享库。尝试运行“otool -L ./project.app/Contrnts/MacOS/project”来查看应用程序试图链接到哪些共享库文件;也许你可以从你的机器上删除旧的 Qt 版本,这样它们就不会干扰。
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多