使用cmake生成ios 的xcode工程,支持Objective-C,c++混合编程

news/2024/7/20 21:22:29 标签: xcode, objective-c, ios, cmake

 如果想在macOS上用CMake编译ios 的Objective-C,可以这样:

cmake_minimum_required(VERSION 3.21)

project(testSDK  LANGUAGES CXX)

set(NAME testSDK)

set(
    SOURCES
    main.m
    CallBackHandler.mm
)

add_executable(
    ${NAME}
    ${SOURCES}	
)
set_target_properties(${NAME} PROPERTIES
        #FRAMEWORK TRUE
        #FRAMEWORK_VERSION C
        #MACOSX_FRAMEWORK_IDENTIFIER com.cmake.${NAME}
        MACOSX_BUNDLE TRUE
        MACOSX_BUNDLE_INFO_PLIST Info.plist
        # "current version" in semantic format in Mach-O binary file
        VERSION 1.0.0
        # "compatibility version" in semantic format in Mach-O binary file
        SOVERSION 1.0.0
        #PUBLIC_HEADER WebSocketClientFactory.h
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
        DEVELOPMENT_TEAM  "xxxx"
        CODE_SIGN_IDENTITY "yyy"
      )
target_link_libraries( # Specifies the target library.
        ${NAME}
        "-framework UIKit -framework Foundation  -framework AVFoundation -framework AudioToolbox  -framework CoreMedia -framework CoreGraphics"
        #"-framework AudioUnit"
                       )

target_compile_options(
    ${NAME}
    PUBLIC
    -fobjc-arc
)

主意 :FRAMEWORK TRUE可以生成动态库

执行以下命令可以生成xcode可以编译的工程文件,ios.toolchain.cmake从这里下载:

https://github.com/ygmtx/ios-cmakehttps://github.com/ygmtx/ios-cmake

cmake . -G Xcode -DCMAKE_TOOLCHAIN_FILE=../../ios.toolchain.cmake -DPLATFORM=OS64 -DENABLE_BITCODE=FALSE

然后使用xcode打开工程编译


http://www.niftyadmin.cn/n/1159604.html

相关文章

大数据系列修炼-Scala课程10

核心内容: 1、scala中常用语法的两个约定(方法调用与apply方法的使用) 2、class中的apply实战详解 3、object中的apply实战详解 4、apply在伴生类与伴生对象中的实战详解 1、scala中常用语法的两个约定(方法调用与apply方法的使用)Scala 是构建在 JVM 上的静态类型的脚本语…

PHP魔术的封装方法总结!

前几天学了一点封装的方法,给大家分享分享!当然还可以封装一个函数来连接数据库!接下来就是一些关键词的意思! __construct($argv1,$argv2,…) 功能:类的构造方法,作用是初始化对象 参数:任意多个,任意类型…

大数据系列修炼-Scala课程11

核心内容: 1、Scala中的继承问题 2、重写字段代码实例 3、重写方法代码实例 scala中的继承、重写问题1>scala中 extends、final关键字用法Java中相同 2>在Scala当中重写一个非抽象方法必须使用override关键字,即重写方法必须使用override 3>只有主构造器可以调用…

iOS,mac基于源码编译以及使用BOOST库

1,下载源码 下载并解压源码,下载路径(来自https://www.boost.org/users/download/),现在以1.77为例:https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2 2&#xff0…

大数据系列修炼-Scala课程12

核心内容: 1、scala中抽象类、抽象方法、抽象字段的概念 2、抽象方法与抽象字段的重写 1、scala中抽象类、抽象方法、抽象字段的概念1>在scala中,含有抽象方法或抽象字段的类为抽象类(在Java中:含有抽象方法的类叫做抽象类) 2>没有执行体的方法叫做抽象方法,scala当中…

xcode 中-all_load、-ObjC、-force_load的使用和区别

1、报错 使用基于webrtc写的程序,编译和链接都没问题,但是运行中报一下错误: Terminating app due to uncaught exception NSInvalidArgumentException, reason: -[RTCAudioSession setConfiguration:active:error:]: unrecognized selecto…

大数据系列修炼-Scala课程13+14

核心内容: 1、作为接口的trait代码实战 2、在对象中混入trait代码实战 1、作为接口的trait代码实战1、scala中的trait(特质)功能很强大,Java中抽象类能做的事情,trait都可以做。Java中接口能做的事情,trait也可以做,它的长处在于可以多继承—即trait既可以当做接口来用,也可以…

Oracle删除重复行

Oracle删除重复行 分类: ORACLE2010-12-12 17:10 423人阅读 评论(0) 收藏 举报oracletabledeleteintegerinsert.net查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from …