没有管理员权限的SFML 1.6

时间:2012-02-09 03:27:20

标签: c++ macos gcc sfml

所以我有这个在Mac OS X Lion上运行良好的SFML 1.6应用程序。目前我的方式是SFML框架在/ Library / Frameworks中并且运行良好,但是要在其他机器上安装它需要管理员权限。所以我想做以下其中一项:

  1. 能够在/ User / idk / Library / Frameworks或类似的

  2. 中安装库
  3. 将库和应用程序打包到Mac磁盘映像中并让它从那里引用库

  4. 静态链接库

  5. 既然程序是使用带有makefile的终端构建的,我希望解决方案是在终端而不是XCode,但如果绝对必要,那么我想我可以以某种方式将项目导入XCode。

    所以任何人都可以解释(精确地)如何做到上述三个中的任何一个,哪个最容易做?

    顺便说一句,我正在使用随XCode 4.1一起提供的LLVM GCC 4.2进行编译。

    编辑:

    除了静态链接之外,有人会尝试另外两个吗?

2 个答案:

答案 0 :(得分:3)

我解决了所以......浪费赏金点......为你而烦恼! :P

我做了一件非常简单的事情,并且没有其他人建议过这件事感到惊讶:

我使用install_name_tool来更改SFML动态库的名称和依赖关系,以便它们可以放在与可执行文件相同的目录中,或放在特殊文件夹中,但这是相对于可执行文件的目录。所以它不需要管理员权限,我很容易将它全部打包到应用程序包中。

答案 1 :(得分:2)

您应该静态链接到SFML。为此,您必须将SFML编译为静态库。最简单的方法是修改SFML附带的Xcode项目("SFML with Intel 64 bits.xcodeproj")。您需要将库的Mach-O类型更改为Static Library

我上传了我使用的SFML with Intel 64 bits.xcodeproj修改版本,您可以获取here。 (该项目需要GCC4.2,因此仅适用于Xcode 3)。

静态链接到SFML非常类似于动态链接到它,只需记住您还需要链接到Cocoa.frameworkOpenGL.frameworkCoreFoundation.framework

另请注意,如果要部署到OSX 10.4或更早版本,则应静态链接到libfreetype。操作系统随附的libfreetype位于10.4及更早版本的不同位置,这会在动态链接时导致问题。