Xcode 设置条件编译参数

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

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

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

  • armv7 - 32bit ARM for iOS Device编辑器

  • arm64 - 64bit ARM for iOS Deviceide

  • i385 - 32bit X86 for iOS Simulatorui

  • x86_64 - 64bit X86 for iOS Simulatorlua

因此以下图这样指定参数是不行的:spa

Set Other Linker Flags.png


设置条件编译参数

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

Add Conditional Flags.png

但在 Xcode 里没法直接指定咱们须要的编译条件。因此咱们须要从 Xcode 里关闭工程文件(确保工程文件已经保存),而后用文本编辑器打开工程的 project.pbxproj 文件。htm

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

相关文章
相关标签/搜索