2011-09-06 109 views
1

我想创建一个(非xcode)makefile来创建一个可导入到XCode项目中的胖库(模拟器+设备)使用直接调用基本命令行工具的makefile(不是从命令行运行XCODE,而是运行MAC Gcc及其相关实用程序) - 这是针对.m,.mm,.c和.cpp源文件的。我想知道如何为iOS的“胖”库制作makefile文件

理想的做法是找到一个简单的库(不通过调用makefile生成器,使得几乎无人类可读的makefile)

反正谁知道这样的事情或适当的机制,为做好该工作的例子相同?

也从一个XCode项目提取编译标志的能力将是真正的得心应手:)

的目的是我想一个模块添加到我的跨平台库,这样我就可以将它们集成到一个iOS的项目。

谢谢!

+0

不知道它是否对您有帮助,但应该有一个叫做lipo的cmd工具,它可以创建脂肪库。 – bryanmac

+0

当搜索到LIPO和makefile时,我发现这个链接:http://graphics.stanford.edu/courses/cs148-10-summer/resources/Makefile.osx – bryanmac

回答

1

您可以通过查看构建细节来提取编译器标志,或者更简单地说,从命令行运行xcodebuild

要创建一个胖二进制,你要么趁编译器工具链的内置在Mac OS X平台上支持通过将多个-arch参数,就像这样:

clang -arch i386 -arch x86_64 -framework Foundation simple.m -o simple 

或者,你建为每个期望的架构二进制一次,然后使用lipo将所有这些二进制文件包装为单个胖二进制文件。使用移植的Unix软件时,这非常方便;只需每次更改构建结果目录,然后在与lipo构建后一起粉碎它们。假设你有simple-i386simple-x86_64,你会然后做:

lipo simple-i386 simple-x86_64 -create -output simple 

这将创建一个名为simple脂肪二元含simple-i386simple-x86_64

+0

这对于修改不同设置的makefile是非常有帮助的,有没有例如,在那里有一个完整的makefile文件,它将从源代码,链接编译,并使无runco​​de(通过模拟器或部署)没有XCode的“hello world”? – peterk

+0

我无法在xcode 4.0.2上找到“构建细节”,也无法在任何地方找到对其的引用 - 只有一个“日志”已经从中删除了详细信息。 – peterk

+0

@peterk:从命令行运行'xcodebuild'并检查输出。 –

0

好了 - 我发现这是一个伟大的HOWTO o使用XCODE,概述过程构建脂肪库以及如何创建项目

http://blog.boreal-kiss.net/2011/03/15/how-to-create-universal-static-libraries-on-xcode-4/

是一个新手,Xcode和iOS开发我有发现一些事情。

  • 您可以查看构建的实际命令行输出以查看gcc标志是什么。 查看 - > Navigators->登录 - 然后控制点击消息列表“扩展所有成绩单” 看到从所选择的构建的构建输出什么输出和错误。

  • 您可以通过使用命令和参数作为登录shell来执行.bashrc和.bash_profile环境设置的“外部构建工具”:“bash --login -c'mybuildtool [my tools args] $(ACTION )',因此绕过不得不处理难以维护的MacOSX启动设置等等,这对于使用红宝石和耙子以及制作等工作起到了作用。