Xcode 中的每个文件编译标志但仅适用于发布版本?

问题描述 投票:0回答:1

Xcode 允许为调试和发布版本定义不同的优化级别。默认情况下,Xcode 根本不会优化调试版本 (

-O0
),并且会使用
-Os
优化发布版本(与
-O2
相同,但会禁用倾向于增大代码大小的优化)。

在某些情况下,您的应用程序或框架中有文件,应以不同的方式对其进行优化。例如。如果您已经实现了计算哈希值的函数,您可能希望使用

-O3
甚至
-Ofast
来优化该函数。或者您编写的代码对性能根本不重要,但它很大并且会增加您的二进制大小,因此您希望使用
-Oz
对其进行优化(优化尽可能最小的代码大小,即使这会损害性能) .

您实际上可以在 Xcode 中更改每个文件的编译标志。

  • 选择目标
  • 转到构建阶段
  • 打开编译源
  • 找到源文件
  • 表格的最右侧有一个“编译器标志”列
  • 双击它并添加仅适用于该文件的编译器标志

但是这些设置始终应用,无论是调试还是发布构建。如果您只想将这些设置应用于发布版本,否则您无法在调试版本中调试代码怎么办?

xcode compiler-optimization build-settings
1个回答
0
投票

这可以通过使用简单的技巧来实现。每个文件编译标志的行为类似于 Xcode 中的构建设置,因此可以引用并扩展其他构建设置。

只需为您的项目或仅为此目标创建用户定义的构建设置。转到“构建设置”,按基本 (

+
) 左侧的
+ | Basic
按钮,然后选择“添加用户定义的设置”。在较旧的 Xcode 版本中,该按钮位于顶栏的最右侧(在“级别”之后,
Levels | +
),或者您可以使用菜单 (
Editor > Add Build Setting > Add User-Defined Setting
)。

以您希望的任何方式命名构建设置,例如

EXTRA_OPTIMIZATION
。与所有设置一样,可以根据构建配置自定义此设置。对于调试版本将其保留为空,对于发布版本将其设置为
-O<whatever>

现在编辑每个文件的编译标志并将其设置为

$(EXTRA_OPTIMIZATION)

在调试版本中,这不会扩展为任何内容,因此不会更改任何内容。在发布版本中,它扩展为

-O<whatever>

© www.soinside.com 2019 - 2024. All rights reserved.