繁体   English   中英

XCode 5.1预处理器宏无法正常工作

[英]XCode 5.1 preprocessor macro not working

我无法得到这个宏来编译正确的代码。

这是代码: 在此输入图像描述

以下是构建设置(我正在进行发布构建): 在此输入图像描述 请注意,GCC文档说-Dname将定义为1,因此我省略了Release的“= 1”: 在此输入图像描述

这是编译日志,显示定义(黄色)在命令行上传递: 在此输入图像描述

这是我的输出日志,显示代码被编译为好像没有定义ADD_CAMERA_FEATURE: 在此输入图像描述

如果我在源中放入#define ADD_CAMERA_FEATURE 1,#ifdef会按预期工作,但我也会收到警告,我正在重新定义现有的宏。 因此,XCode知道宏应该从构建方案设置中存在,但仍然不包括#ifdef代码分支。

其他详情:

  1. XCode 5.1
  2. OS X 10.9.2
  3. iOS 7.1

我的目标是建立一个目标,用于构建iOS 7版本的应用程序,以及构建应用程序的iOS 7之前版本的目标,两者都来自同一个来源。 我必须支持那些无法再升级到iOS 7的旧设备。 也许有更好的方法来解决这个问题。 任何关于如何实现这一点的建议将不胜感激。

发现了问题。 它与目标和依赖关系有关。 我创建了一个新目标来编译源文件并将预处理器定义添加到该目标。 然后,该编译对象被链接到用作框架的静态库。 所以我还为静态库创建了一个新目标。 不幸的是,我忽略了静态库目标仍然依赖于原始编译步骤,该步骤不包括预处理器定义。 因此,即使我正在构建目标文件,新的目标文件也不是在运行时链接到项目中的文件。 因此,在静态库的Build Phases下,我需要将目标依赖项更改为正确的目标文件,一切都开始起作用。 感谢@matt和@StevenFisher指出我正确的设置。

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM