【问题标题】:How to Install KDE Marble as a library on OSX?如何在 OSX 上将 KDE Marble 安装为库?
【发布时间】:2013-02-04 08:12:49
【问题描述】:

我一直在研究在OSX 上的应用程序中使用KDE's MarbleWidget。但是,此处的说明:http://marble.kde.org/sources.php 似乎只构建marble.app 并安装它。我一直无法弄清楚如何在/usr/local.下安装包含和库

有什么想法吗?

【问题讨论】:

    标签: macos qt kde


    【解决方案1】:

    编辑您最初应该遵循以下 cmake 说明:http://techbase.kde.org/Projects/Marble/MacCompiling

    您可能需要修改 CMakeLists.txt:确保两行都设置了 CMAKE_OSX_ARCHITECTURES。无论如何,我必须这样做:将此变量设置为对您的 OSX 平台有意义的值也可以,但似乎 cmake 足够聪明,可以默认猜测适当的架构。并且在命令行上传递 -DCMAKE_OSX_ARCHITECTURES 似乎不起作用。

    然后运行make,make install。

    这里有关于哪些文件需要复制到哪里的说明:

    https://code.google.com/p/tonatiuh/wiki/InstallingMarbleForMac

    在那之后你需要做一些事情。需要修复文件 libmarblewidget.15.dylib(您将复制到 /usr/local/lib/marble),以便它知道它在哪里。关于为 OSX 部署应用程序的 Qt 页面 (http://qt-project.org/doc/qt-4.8/deployment-mac.html) 提供了有关如何执行此操作的更广泛的指南,但基本上您只需要使用 install_name_tool 来告诉库它现在所在的位置。如果你使用 otool 检查它的状态,你会得到类似的东西:

        kagutsuchi$ otool -L /usr/local/lib/libmarblewidget.15.dylib
        /usr/local/lib/marble/libmarblewidget.15.dylib:
            /marble/build/dir/src/lib/marble/libmarblewidget.15.dylib (compatibility version 15.0.0, current version 0.15.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtDBus.framework/Versions/4/QtDBus (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtXml.framework/Versions/4/QtXml (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtScript.framework/Versions/4/QtScript (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtWebKit.framework/Versions/4/QtWebKit (compatibility version 4.8.0, current version 4.8.0)
            /Developer/QtSDK/Desktop/Qt/4.8.0/gcc/lib/QtDeclarative.framework/Versions/4/QtDeclarative (compatibility version 4.8.0, current version 4.8.0)
            /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 41.0.0)
            /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
            /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
            /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.15.0)
    

    第二行 (/marble/build/dir/src/lib/marble/libmarblewidget.15.dylib ...) 是个问题,因为这不是库的当前位置。你可以改变它:

        kagutsuchi$ sudo install_name_tool -id /usr/local/lib/marble/libmarblewidget.15.dylib /usr/local/lib/marble/libmarblewidget.15.dylib
    

    -id 后面的参数是新的标识符。下一个参数是您正在修改的文件,因此您也可以这样做:

        kagutsuchi$ cd /usr/local/lib/marble
        kagutsuchi$ sudo install_name_tool -id /usr/local/lib/marble/libmarblewidget.15.dylib libmarblewidget.15.dylib
    

    您还需要在将插件复制到 /usr/local/bin/marble 后对其进行修改,以便它们知道在哪里查找 libmarblewidget.15.dylib,再次使用 install_name_tool:

        kagutsuchi$ cd /usr/local/lib/marble
        kagutsuchi$ for sofile in `ls *.so`; do sudo install_name_tool -change /marble/build/dir/src/marble/build/src/lib/libmarblewidget.15.dylib /usr/local/lib/marble/libmarblewidget.15.dylib $sofile; done
    

    您应该能够对 /marble/build/dir 使用与修复 libmarblewidget.15.dylib 相同的值。

    这一切都应该有效。如果您使用 otool -L 检查这些文件,它们现在应该在正确的位置查找库。您还应该能够编译您的 Qt 代码,前提是您的 .pro 文件中有正确的 INCLUDEPATH 和 LIBS 内容。

    但是...我被困在这一点上。我已经编译了我的代码,但是当我尝试让它运行我创建的 MarbleWidget 时,并没有在正确的位置寻找插件。我将在插件主题上发布一个问题,看看是否可以获得一些帮助。

    【讨论】:

      【解决方案2】:

      我只能提供Linux版本的建议,但我想它是相似的。

      安装过程还应该创建可以在自己的应用程序中使用的库文件。要将它们复制到文件夹 /usr/local,您可以按照以下方式进行操作:

      http://code.google.com/p/tonatiuh/wiki/InstallingMarbleForLinux

      然后您可以按照以下步骤设置基本应用程序: http://techbase.kde.org/Projects/Marble/MarbleCPlusPlus

      基本上,您必须找到库文件并复制并粘贴到正确的目录。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多