3

我一直在研究KDE's MarbleWidgetOSX. 但是,此处的说明:http: //marble.kde.org/sources.php似乎只是构建marble.app和安装它。我无法弄清楚如何获取安装在下的包含和库/usr/local.

有任何想法吗?

4

2 回答 2

1

我只能对 Linux 版本给出建议,但我想它是相似的。

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

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

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

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

于 2013-02-19T16:35:32.480 回答
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 时,并没有在正确的位置寻找插件。我将在插件主题上发布一个问题,看看是否可以获得一些帮助。

于 2013-03-26T04:24:11.053 回答