选中 target ---> Build Settings ---> 搜索 Swift Compiler - Custom Flags
展开 Active Compilation Conditions 进行设置,只能这样写:TEST, 不能像OC一样设置TEST=1

如果是 OC 和 Swift 混编的项目,OC也需要用到,则还是在 Preprocessor Macros 里添加一遍

链接-1
链接-2

Swift 通过预编译宏和scheme来控制程序版本

  • 第一步、新增Scheme

    image.png

  • 第二步、新增Configurations

    image.png

  • 第三步、新增预编译宏

    image.png

  • 第四部、分配Scheme,选择对应的Project

    image.png

  • 第五部、通过#if #elseif #endif在代码层实现控制

 #if DEBUG || APP_TYPE_Code || RELEASE// 这是纯代码print("code")#elseif APP_TYPE_Xib  // 这是storyboardprint("storyboard")#endif

OC与Swift的区别

  • 第三步第五步的地方不一样、其他基本差不多
  • 第三步

    image.png

  • 第五步
    具体百度吧,很简单不做赘述

引申:感兴趣的可以看看这两篇文章,很不错
链接1
链接2

作者:LK_EX
链接:https://www.jianshu.com/p/257dc733328b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Swift - 设置预编译宏相关推荐

  1. [Swift5] Swift 设置自定义预编译宏

    在开发中经常用 target 区分正式.测试环境,用到自定义的预编译宏来判断,OC中可以在 target 的 Preprocessor Macros 里设置,Swift 则不同. Swift设置预编译 ...

  2. C++头文件中预编译宏的目的

    C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_ #define _FACTORY_H_ ...... #endif //~_FACTORY_H_ 防止头文件被重复包含,导 ...

  3. C中的预编译宏定义-转

    C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocesso ...

  4. C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  5. c语言数组宏定义标识符,C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针...

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  6. c语言如何增加编译宏,C中的预编译宏定义

    在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏( ...

  7. C/C++跨平台的的预编译宏

    我们在编译一些跨平台的程序的时候难免会遇到_WIN32  __linux__什么之类的SDK或者编译器环境预定义的宏.有很多,之前还分不清_WIN32 和WIN32的区别.不过这里还好有个列表,做个备 ...

  8. 在VS中设置预编译头从而提高编译速度

  9. Unity3D 多平台 预编译 宏定义

    平台定义 UNITY_EDITOR 编辑器调用. UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义. UN ...

最新文章

  1. html5 游戏前景怎么样,独家 HTML5游戏目前究竟怎么样?看完这篇文章,你或许会清晰很多...
  2. scp时候出现ssh Connection refused的解决方案
  3. xxx cannot be resolved to a type 错误解决方法
  4. CSS阴影box-shodow总结
  5. windbg bp condition
  6. checkedListBox使用例子
  7. android 判断ip地址合法
  8. Django-Json 数据返回
  9. C语言中extern修饰符的用法
  10. php完全安装安装,服务器_Apache Web 服务器的完全安装指南,所需软件apache_ - phpStudy...
  11. Linux性能优化实战:应用的CPU使用率100%,我该怎么办(05)
  12. android之日志库logger
  13. 答对10个算我输,示波器基础100问
  14. Roberts算子,matlab代码实现
  15. 基于matlab的时频特征分析,基于MATLAB的时频分析在心电信号分析中的研究与应用...
  16. 我的盖洛普“优势识别器”测试证书
  17. linux 汇编 变址寻址,【计组】偏移地址、段地址和寻址方式
  18. android 滤镜 原理,android openglse实现滤镜九宫格
  19. 将UTC时间格式转换成东八区时间格式
  20. 我想建立网站,网站搭建需要哪些大体步骤?

热门文章

  1. C#窗体应用 socket通信(一)
  2. 《分布式系统:概念与设计》一1.2 分布式系统的例子
  3. [C/C++/Qt] 网易云音乐缓存文件批量自动解析解码工具 - CloudMusicCache2Mp3(开源)(Version:1.0)
  4. 计算机网络中的c类地址,计算机网络中的A类、B类、C类地址的划分
  5. 计算机思维导图pdf百度云资源,计算机思维导图
  6. 机器人路径规划——关于贝塞尔曲线方程的理解
  7. 宏杉科技的第一,不是魔术变出来的
  8. Unity 编辑器运行没问题,打包exe文件运行蓝屏?
  9. 东距(easting)、北距(northing)、东伪偏移(false easting)、北伪偏移(false northing)
  10. html 用户输入成绩,程序输出相应的成绩等级