为iPhone sdk编译swiften库

时间:2012-09-05 11:46:31

标签: c++ ios iphone swiften

关于图书馆的简短说明:Link of library

我想为iPhone sdk编译swift库(即http://swift.im/git/swift/tag/?id=swift-2.0beta1)。我已经检查了它的文档文件夹和编译方式,但是他们只提到了Windows和Unix的编译步骤(即该页面包含编译文件http://swift.im/download/#apt的链接)。但我没有得到如何为iPhone sdk编译它。他们提到的步骤没有得到。那么,任何人都可以解释一下吗?检查其中一个文件后我才知道应该可以为iPhone编译。

他们提到的另一个问题是它是在GNU通用公共许可证v3下,所以我可以使用商业应用程序专门批准苹果吗?

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:3)

数据Swiften已经内置了对iOS设备或模拟器构建的支持。我能够构建它,但还没有测试过它。

我将假设您使用XCode 4.4(或足够现代的东西)并定位在iPhone上运行的iOS 5.1> 3GS 即可。另外,我假设您要构建swiften-1.0。 (如果为早期版iPhone构建,请将armv7更改回下面的armv6

为了构建它,需要涉及几个步骤。

修复路径和SDK版本

在文件编辑器中打开swift-1.0/BuildTools/SCons/SConstruct,然后:

  1. 更改第232行

    env["XCODE_PLATFORM_DEVELOPER_BIN_DIR"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin"

    env["XCODE_PLATFORM_DEVELOPER_BIN_DIR"] = "/Applications/Xcode.app/Contents" + "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin"

  2. 在第234行中,将armv6更改为armv7

  3. 在第239行中,将“4.0”更改为“5.1”
  4. 更改第240行

    env["XCODE_SDKROOT"] = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"

    env["XCODE_SDKROOT"] = "/Applications/Xcode.app/Contents" + "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"

  5. crt_externs.h复制到swift-1.0/

    (来自Matt Galloway的Compiling Boost for the iPhone

    crt_externs.h复制到swift的目录;在swift-1.0/时,执行:

    cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/usr/include/crt_externs.h .
    

    下载并构建openssl

    swiften需要openssl,但iOS没有内置版,因此您必须手动下载和编译它。在终端中执行以下操作:

    cd <swift-directory>/3rdParty/OpenSSL
    wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
    

    这将下载openssl的soruce;为了构建它,我使用了script from GitHub。仍然在<swift-directory>/swift-1.0/3rdParty/OpenSSL,执行,

    wget --no-check-certificate https://raw.github.com/st3fan/ios-openssl/master/build.sh
    

    修改build.sh - 将第10行从1.0.1b更改为1.0.1c

    现在,chmod +x build.sh,最后是./build.sh。这需要几分钟时间来构建openssl

    构建swiften

    你差不多 - 将目录更改为swift的根目录,然后执行

    ./scons Swiften allow_warnings=yes target=iphone-device openssl="<swift-directory>/3rdParty/OpenSSL"
    

    这将构建一个库,用于链接针对为设备构建的应用程序;如果您想在模拟器中运行它,请在上面的行中将target=iphone-device更改为target-iphone-simulator。可以在libSwiften.a

    中找到库文件<swift-directory>/Swiften