能否通过在Xcode项目中设置属性来为条件编译设置符号?
我的目的是创建一个符号,可供所有文件使用,无需使用import/include,以便一组公共类在某些项目中具有特殊行为。类似于以下示例,但使用自己的符号。
#if TARGET_IPHONE_SIMULATOR
...
#endif
能否通过在Xcode项目中设置属性来为条件编译设置符号?
我的目的是创建一个符号,可供所有文件使用,无需使用import/include,以便一组公共类在某些项目中具有特殊行为。类似于以下示例,但使用自己的符号。
#if TARGET_IPHONE_SIMULATOR
...
#endif
前往您的目标或项目设置,在左下方点击齿轮图标,然后选择“添加用户定义设置”。新设置名称应为GCC_PREPROCESSOR_DEFINITIONS
,您可以在右侧字段中输入定义内容。
根据 Steph 的评论,完整语法如下:
constant_1=VALUE constant_2=VALUE
注意,如果你只想定义一个符号而不是给它赋值(对于#ifdef
语句),那么你不需要使用"="。
作为一种补充,如果您正在使用这种技术来定义目标中的字符串,那么这就是我必须定义和使用它们的方式:
在构建设置->预处理器宏中,是的,反斜杠在定义中很关键:
APPURL_NSString=\@\"www.foobar.org\"
还有在源代码中:
objectManager.client.baseURL = APPURL_NSString;
*_Prefix.pch
文件来声明项目范围内的宏定义。
该文件通常位于你的其他源代码组中。对于Xcode 9.4.1和C++项目,需要在Debug和Release构建中添加const char*
预处理器宏。
Select your project
Select Build Settings
Search "Preprocessor Macros"
Open interactive list
Add your macros and don't forget to escape quotation
Use in source code as common const char*
...
#ifndef JSON_DEFINITIONS_FILE_PATH
static constexpr auto JSON_DEFINITIONS_FILE_PATH = "definitions.json";
#endif
...
FILE *pFileIn = fopen(JSON_DEFINITIONS_FILE_PATH, "r");
...
在“GCC 4.2预处理”下可以找到它(或者在搜索框中输入“prepro”)...
...然而,我却无论如何都无法让它工作。
我有我的标准调试和发布配置,并且我想在调试配置中定义DEBUG=1。但是在将其添加为值后:
(在设置窗口中) > 预处理器宏:DEBUG=1
#if DEBUG
printf("DEBUG is set!");
#endif
...从来没有被打印/调用。这真让我疯狂...
#if defined(DEBUG)
或者#ifdef DEBUG
- Simo Salminen#if DEBUG
开始起作用 :) https://dev59.com/oFkT5IYBdhLWcg3wStkf#47395485 - jeff-h您可以复制具有预处理部分的目标,将其重命名为任何您想要的名称,然后更改您的预处理器宏值。