预处理器设置混乱
Posted
技术标签:
【中文标题】预处理器设置混乱【英文标题】:Preprocessor settings confusion 【发布时间】:2012-08-06 15:37:16 【问题描述】:我正在尝试在 DEV 模式下或在 RELEASE 模式下使用预处理器设置进行简单测试。我的设置如下:
我还有一个 constant.h 文件,我将它包含在 App-prefix.pch 文件中。
文件内容如下:
#ifndef myapp_Constants_h
#define myapp_Constants_h
#pragma mark - Instances
#ifdef DEBUG
#define WEB_SERVICE_BASE_URL @"http://local.someurl.com/"
#define LOGIN_PATH @"app_dev.php/user/login/"
#define REGISTER_PATH @"app_dev.php/user/register/"
#endif
#ifdef RELEASE
#define WEB_SERVICE_BASE_URL @"http://www.someurl.com/"
#define LOGIN_PATH @"user/login/"
#define REGISTER_PATH @"user/register/"
#endif
#endif
当我在连接到 mac 的 iphone 上运行应用程序时,我似乎总是获得 DEBUG 模式设置,即使我应该获得 RELEASE 设置。
为什么??
【问题讨论】:
【参考方案1】:Xcode 的默认配置是在 Debug 中运行,即使在设备上也是如此。如果您想在发布版中运行您的应用,您可以:
使用“配置文件”(Command-I)或“存档”(然后安装生成的应用程序)。 通过选择“产品 -> 编辑方案”来修改您的方案。 (或使用 Command-Option-R。)单击“运行”方案,并将“构建配置”更改为“发布”。 (它在“信息”面板中。)如果您想频繁地来回切换,您可以制作另一个方案(在“管理方案”中)并修改它以使用发布构建配置。然后,您可以使用 Xcode 左上角的方案选择器轻松地在它们之间切换。
【讨论】:
【参考方案2】:在我看来,DEBUG 总是在您附加到 Xcode 运行时定义。
一个解决方案是
#ifdef RELEASE
// release constants
#else
// debug constants
#endif
这样,您的 RELEASE 定义将覆盖 DEBUG。
编辑:在没有设置 DEBUG 和 RELEASE 的任何情况下,您仍然有一个可行的环境。它可能会发生。
【讨论】:
我按照您的建议进行了更改,但结果仍然相同。 如果您一直按 cmd-R 从 Xcode 运行您的项目,您将始终在DEBUG
模式下运行。 IIRC 在使用分发证书签名之前,您不能在最终发布模式下运行。尽管如此,您可以做的是在DEBUG
模式下定义RELEASE
指令,或者创建一个定义RELEASE
指令的新运行方案。
DEBUG 在附加到 Xcode 运行时并不总是定义,如果您在代码签名设置中指定了发行证书,则只需要分发证书即可运行。以上是关于预处理器设置混乱的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2017 - 是不是可以同时为调试和发布配置设置预处理器定义?
Visual Studio 预处理器仅在设置 /P 时才有效