如何在OSX上安装KDE Marble作为库?

时间:2013-02-19 15:22:14

标签: macos qt kde

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

下安装包含和库

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我只能就Linux版本提供建议,但我认为它类似。

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

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

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

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

答案 1 :(得分: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应用程序(http://qt-project.org/doc/qt-4.8/deployment-mac.html)的Qt页面有关于如何执行此操作的更广泛指南,但基本上您只需使用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时,我创建的并不是在插件的正确位置。我将在插件主题上发布一个问题,看看我是否能得到一些帮助。