SFML 1.6如何在没有管理员权限的情况下运行?

5
我有一个在Mac OS X Lion上运行良好的SFML 1.6应用程序。目前,我将SFML框架放在/Library/Frameworks中,它可以正常工作,但是在其他机器上安装需要管理员权限。因此,我想要做以下几件事情之一:
  1. 能够将库安装在/User/idk/Library/Frameworks或类似位置

  2. 将库和应用程序打包成Mac磁盘映像,并从那里引用库

  3. 静态链接库

由于该程序使用makefile在终端中构建,因此我希望解决方案在终端中而不是XCode中实现,但如果绝对必要,我想我可以将项目以某种方式导入到XCode中。
所以,有人能够(精确地)解释如何执行上述三个操作中最容易的任意一个吗?
顺便说一句,我正在使用随XCode 4.1一起提供的LLVM GCC 4.2进行编译。
编辑:
除了静态链接之外,有人可以尝试其他两个方法吗?
2个回答

3

我解决了这个问题...有点浪费奖励分...你真衰! :P

我做了一些非常简单的事情,让我感到惊讶的是没有人提出过:

我使用install_name_tool更改了SFML动态库的名称和依赖项,以便它们可以放置在可执行文件所在目录下或特殊文件夹中,但是相对于可执行文件的目录。因此,不需要管理员权限,并且我轻松地将其全部打包成一个应用程序包。


1
点赞了你的好回答,但是让人们失去他们的赏金,你真是太过分了! :) - Danra
如果有人提供了一个好的、可行的解决方案,我总是会给予奖励。 :D - slartibartfast

2
您可能需要静态链接到SFML。为此,您必须将SFML编译为静态库。最简单的方法可能是修改SFML附带的Xcode项目(“SFML with Intel 64 bits.xcodeproj”)。您需要将库的Mach-O类型更改为“Static Library”。
我上传了我使用的修改后的“SFML with Intel 64 bits.xcodeproj”版本,您可以在这里获取它。(此项目需要GCC4.2,因此仅适用于Xcode 3)。
静态链接到SFML与动态链接非常相似,只需记住您还需要链接到Cocoa.framework、OpenGL.framework和CoreFoundation.framework。
请注意,如果您想部署到OSX 10.4或更早版本,您应该静态链接到libfreetype。在10.4及更早版本中,操作系统提供的libfreetype位于不同的位置,这会在动态链接时引起问题。

@myrkos:是什么样的问题?请具体说明。 - Mankarse
好的。基本上,在“自定义 Shell 脚本”中,它说“cp: 3/build/xcode/../../include/SFML/:没有那个文件或目录”。那就是错误了。 - slartibartfast
@myrkos:当您遇到此错误时,您想要做什么?这个“自定义 Shell 脚本”是什么,它的内容是什么? - Mankarse
我正在尝试编译sfml-graphics,但它只是第一个需要编译的文件。“PhaseScriptExecution "Run Script" "build/SFML with Intel 64 bits.build/Debug/SFML.build/Script-A0BA42130DDF0E3F00039094.sh"”,这就是它的名称……据说是这样。很抱歉,但我找不到其他简化此问题的方法了。这是实际编译之前运行的脚本。 - slartibartfast
感谢您上传项目文件;我会尽快查看。 - slartibartfast
显示剩余8条评论

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