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

3
我一直在研究如何在OSX应用程序中使用KDE的MarbleWidget。然而,这里的说明:http://marble.kde.org/sources.php似乎只能构建marble.app并安装它。我还没有找到如何将包含文件和库安装在/usr/local下的方法。
有什么想法吗?
2个回答

1
我只能就 Linux 版本提供建议,但我想它应该是类似的。
安装过程还应该创建库文件,您可以在自己的应用程序中使用。要将它们复制到 /usr/local 文件夹中,可以按照以下步骤进行:

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

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

基本上,您需要定位库文件并复制粘贴到正确的目录中。希望这有所帮助。


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)需要被修复,以便它知道自己的位置。Qt页面关于在OSX上部署应用程序的文档(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

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

这应该都能正常工作。如果您使用otool -L检查这些文件,它们现在应该在正确的位置查找库。只要您在.pro文件中拥有正确的INCLUDEPATH和LIBS内容,您也应该能够编译您的Qt代码。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接