iOS编译命令

作者: 平凡码农 | 来源:发表于2019-02-11 16:12 被阅读2次

将OC代码转换成C++代码

OC语言基于C/C++语言,实际上要先经过一层编译将OC代码转换为C++代码,对应的clang命令为:

clang -rewrite-objc xx.m

__weak、__strong等修饰符报错

如果此时我们用到了__weak、__strong等修饰符,那就会报错咯

error: cannot create __weak reference because the current deployment target does not support weak references __attribute__((objc_ownership(weak))) NSObject *weakObj = obj;

这是因为__weak需要运行时objc的支持,需要指定运行时环境

clang -rewrite-objc -fobjc-arc -fobjc-runtime=ios-8.0.0 main.m
#import <UIKit/UIKit.h>报错

如果我们引入了UIKit框架,那么此命令会报错

main.m:10:9: fatal error: 'UIKit/UIKit.h' file not found

好事多磨啊,这是因为我们没有指定链接的sdk

clang -rewrite-objc -fobjc-arc -fobjc-runtime=ios-8.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk main.m

xcrun命令

其实,xcode安装的时候顺带安装了xcrun命令,xcrun命令在clang的基础上进行了一些封装,要更好用一些。

##### 在模拟器下编译
xcrun -sdk iphonesimulator clang -rewrite-objc main.m

#在真机下编译
xcrun -sdk iphoneos clang -rewrite-objc main.m

有时候我们在本机安装了多个Xcode,可以指定xcrun使用不同的Xcode对应的SDK

xcode-select -s /Applications/Xcode9.4.1.app

列出当前xcrun对应的SDK的版本的命令

xcodebuild -showsdks
iOS SDKs:
    iOS 12.1                        -sdk iphoneos12.1

iOS Simulator SDKs:
    Simulator - iOS 12.1            -sdk iphonesimulator12.1

macOS SDKs:
    macOS 10.14                     -sdk macosx10.14

tvOS SDKs:
    tvOS 12.1                       -sdk appletvos12.1

tvOS Simulator SDKs:
    Simulator - tvOS 12.1           -sdk appletvsimulator12.1

watchOS SDKs:
    watchOS 5.1                     -sdk watchos5.1

watchOS Simulator SDKs:
    Simulator - watchOS 5.1         -sdk watchsimulator5.1

相关文章

  • iOS编译命令

    将OC代码转换成C++代码 OC语言基于C/C++语言,实际上要先经过一层编译将OC代码转换为C++代码,对应的c...

  • iOS编译命令

  • iOS 集成FFmpeg与使用

    iOS基于FFmpeg 4.1 的命令编译 1、iOS集成FFmpeg 下载脚本FFmpeg脚本地址 这里目前使用...

  • 通过ideviceinstaller获取IOS APP bund

    查看ios设备udid: 查看ios应用的bundleId: 如果出现报错: 尝试以下命令重新编译库

  • .../privatedata/PrivateDataBase.

    这种在iOS编译的报错解决方法 1.删除iOS/build/下的所有文件,然后执行命令: 若再次编译出现以下错误:...

  • webrtc编译ios命令

    编译 framework 运行命令 gclient runhooks 进入 src 目录,然后执行 '''' ./...

  • 提高项目编译速度工具

    buck facebook 开源的编译命令,能大大提高编译速度,iOS和Android都可以使用具体安装步骤可以参...

  • iOS编译过程的原理和应用

    1.OC:Clang编译器编译OC代码一般用这个命令-rewrite-objc来看底层源码的逻辑 深入剖析 iOS...

  • 2019-05-22

    ./build-ffmpeg.sh 执行这个这个命令的时候,可能会报错 ios编译ffmpeg出现xcrun -s...

  • iOS 预编译命令小记

    前言 我们在写代码的时候往往会使用一些预编译,这样会方便我们功能代码的编写。这是我在工作中所使用的预编译的命令,分...

网友评论

    本文标题:iOS编译命令

    本文链接:https://www.haomeiwen.com/subject/puuqeqtx.html