2012-02-09 206 views
5

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

  1. 能够安装在图书馆/用户/ IDK的/库/框架或类似

  2. 包库和应用程序到一台Mac磁盘映像并有从那里引用库

  3. 静态链接库

现在,因为该程序正在使用W端内置ith makefile,我更喜欢解决方案是在终端而不是XCode,但如果绝对必要,那么我想我可以以某种方式将项目导入XCode。

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

顺便说一句,我使用的LLVM GCC 4.2与XCode 4.1一起编译。

编辑:

如何有人从静态链接尝试其他两个,除了?

回答

3

我解决了它,所以...浪费奖金点的种类...为您的SUCKS! :P

我做了一件很简单,很惊讶没有人曾建议是:

我用install_name_tool改变SFML动态库的名称和依赖,使他们可以放在同一个目录中可执行文件或特殊文件夹中,但这与可执行文件的目录有关。所以它不需要管理员权限,我可以轻松将其全部打包到应用程序包中。

+1

Upvoted了很好的答案,但可耻的是你剥夺了赏金的人:) – Danra 2012-02-17 01:21:35

+0

!如果有人提供了一个好的工作解决方案,我总会给予奖励。 :d – slartibartfast 2012-02-19 03:29:26

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。随OS提供的libfreetype在10.4和更早版本中位于不同位置,并且在动态链接时会导致问题。

+0

XCode现在似乎不喜欢SFML ......编译时出现错误。有没有其他方法可以做到这一点?因为看起来SFML 1.6在Mac 10.7上有XCode的问题... – slartibartfast 2012-02-09 04:01:35

+0

@myrkos:什么样的问题?请更具体一些。 – Mankarse 2012-02-09 04:08:37

+0

好的。所以基本上,在“自定义外壳脚本”中说:“cp:3/build/xcode /../../include/SFML/:没有这样的文件或目录”。这是错误。 – slartibartfast 2012-02-09 04:14:31