Xcode 设置条件编译参数

这两天在 Xcode 工程中整合 LuaJIT,遇到一个小问题。

根据 LuaJIT 的文档 (Embedding LuaJIT 章节),在 Mac x86_64 环境下编译时,必须指定 Linker Flags: -pagezero_size 10000 -image_base 100000000

问题是在 Xcode 中,如果你直接修改 Other Linker Flags,那么所有架构编译时都会使用这个参数。假如是一个 iOS 工程,那么实际上这个工程存在四种架构:

  • armv7 - 32bit ARM for iOS Device

  • arm64 - 64bit ARM for iOS Device

  • i385 - 32bit X86 for iOS Simulator

  • x86_64 - 64bit X86 for iOS Simulator

所以如下图这样指定参数是不行的:

Set Other Linker Flags.png


设置条件编译参数

首先清除参数,然后点击 Debug/Release 旁边的 (+) 按钮,添加一个条件编译参数,并输入参数设定值:

Add Conditional Flags.png

但在 Xcode 里无法直接指定我们需要的编译条件。所以我们需要从 Xcode 里关闭工程文件(确保工程文件已经保存),然后用文本编辑器打开工程的 project.pbxproj 文件。

project.pbxproj 文件在 Xcode 工程中。可以在 Finder 里右键点击 Xcode 工程,然后选择菜单“查看包内容”。

全文搜索输入的编译参数(注意参数会按照空格分割为多行,所以可以只搜索其中一个参数),找到如下内容:

"OTHER_LDFLAGS[arch=*]" = (
    "-pagezero_size",
    10000,
    "-image_base",
    100000000,
);

将其中的 [arch=*] 修改为 [sdk=iphonesimulator*][arch=x86_64],并且保存文件。

修改完毕后,用 Xcode 重新打开工程,可以看到编译条件已经变成了:

Xcode Project Settings.png

关于 Xcode 工程和条件编译参数,可以参考这篇文章:The Unofficial Guide to xcconfig files

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值