Xcode 利用 Target 机制定制构建过程的一次尝试

    标题太拗口了。事情是这样的,之前对 Target 有所了解,可是没有自己运用过,刚巧有个事情,我觉得可以借助 Target 机制,就动手实践了一下,今天总结一下。这个事情是我们有个库不支持 x86 平台,导致我们的 app 不能用模拟器调试。用这个库是个非常边缘的业务,所以采取方案是自定义一个 Target,构建出没有这块业务和这个库的产物用,然后用模拟器调试。(用两个分支显然不如用两个 Target 好,因为前者相当于维护两套代码,需要操心同步问题,Target 核心是两套不同的构建配置。)(让这个库支持 x86 平台是最先想到的,不过这个非常边缘的业务已在下线边缘,就不去推动别人改了,自己兼容掉了)

    首先说,如何不编译这块业务的代码。将这块业务的相关代码用#if XXSDK #endif 包围。在模拟器 Target Build Settings 下面设置预编译宏,如下所示:
在这里插入图片描述
    那么相关业务代码就不会编译。

    然后,修改模拟器 Target Build Setting 下面的 Other Linker Flags 配置,如下所示:
在这里插入图片描述
    这个配置直接决定构建时会 link 哪些库,可以在这里进行手动删减。**如果有个库从这个被排除了,构建的过程中还是被 link,可能是 $(inherited) 导致的。**打开构建日志可以看到完整的 Link 命令,如下所示:
在这里插入图片描述
    可以通过your/path/clang++ -help 的方式去查看这个命令的注释:

-L <dir>                Add directory to library search path
-F <value>              Add directory to framework include search path

    如果你依赖的库没有自动构建,可以自己手动构建,New Scheme 选择你想构建的库的 Target,然后 Build,注意 Build 的时候的 Device 是真机还是模拟器,会影响你构建的产物,因为大部分 Debug 模式下 Build Active Architecture Only 标志是 Yes,(生成产物的目录也不一样,Derived Data 目录是分模拟器和真机的)。如何需要依赖的库自动构建,可以把相应的 Target 加到 Target Dependencies 下面,或者加到 Link Binary With Libraries 下面并打开 Find Implicit Dependencies(Edit Scheme - Build - Build Options)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值