码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用cmake编译xcode的framework,并且保留Headers目录结构,并携带bundle资源


    参考文档:

    tvm_phone/tvm-cmake-ios.md at master · zhaowd2001/tvm_phone · GitHub

    https://blog.csdn.net/qq_38743313/article/details/101601778/

    参考了前面几个文档,发现都不是最好的解决办法,准确的说就没起作用,哈哈哈。

    我的测试目录结构如下:

    根目录/

            assets/test.txt   

            interface/test/somefile.h

            src/somefile.cpp

            CMakeLists.txt

            ios.toolchain.cmake

            build.sh

    assets是我想直接复制到framework中去的资源

    CMakeLists.txt内容如下

    1. cmake_minimum_required(VERSION 3.10.2)
    2. project(CMakeTestLib)
    3. enable_language(CXX)
    4. set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib/${OUTPUT_PATH})
    5. file(GLOB_RECURSE SOURCE_FILES ${CMAKE_SOURCE_DIR}/src/*.cpp)
    6. file(GLOB_RECURSE INCLUDE_FILES ${CMAKE_SOURCE_DIR}/interface/*.h)
    7. file(GLOB_RECURSE ASSETS_FILES ${CMAKE_SOURCE_DIR}/assets/*.txt)
    8. MESSAGE( STATUS "SOURCE_FILES: " ${SOURCE_FILES} )
    9. MESSAGE( STATUS "INCLUDE_FILES: " ${INCLUDE_FILES} )
    10. MESSAGE( STATUS "ASSETS_FILES: " ${ASSETS_FILES} )
    11. set(RESOURCE_FILES
    12. ${CMAKE_SOURCE_DIR}/assets/note.txt
    13. )
    14. include_directories(${PROJECT_NAME}
    15. ${CMAKE_SOURCE_DIR}/interface
    16. )
    17. add_library(${PROJECT_NAME}
    18. SHARED
    19. ${SOURCE_FILES}
    20. ${CMAKE_SOURCE_DIR}/interface
    21. ${CMAKE_SOURCE_DIR}/assets
    22. )
    23. # Debug symbols set in XCode project
    24. # set_xcode_property(${PROJECT_NAME} GCC_GENERATE_DEBUGGING_SYMBOLS YES "All")
    25. set_target_properties(${PROJECT_NAME} PROPERTIES
    26. FRAMEWORK TRUE
    27. FRAMEWORK_VERSION A
    28. MACOSX_FRAMEWORK_IDENTIFIER com.test.${PROJECT_NAME}
    29. # MACOSX_FRAMEWORK_INFO_PLIST Info.plist
    30. # "current version" in semantic format in Mach-O binary file
    31. VERSION 1.0.1
    32. # "compatibility version" in semantic format in Mach-O binary file
    33. SOVERSION 1.0.1
    34. PUBLIC_HEADER ${CMAKE_SOURCE_DIR}/interface
    35. RESOURCE ${CMAKE_SOURCE_DIR}/assets
    36. #XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
    37. )
    38. target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/interface)

    注意事项:

    1、无论是headers还是assets,都要先在add_library中添加了才有用。

    2、PUBLIC_HEADER和RESOURCE 后面都可以直接写目录,而非文件列表。

  • 相关阅读:
    【限时免费】20天拿下华为OD笔试之【回溯】2023B-第N个排序【欧弟算法】全网注释最详细分类最全的华为OD真题题解
    孩子到底是食物过敏?还是食物不耐受?
    IO学习系列之使用多进程复制同一个文件内容
    输出1234无重复的三位数
    Mac安装telnet
    python实现中缀表达式转后缀表达式
    【编程语言发展史】SQL的发展历史
    CIKM 2020 | FANG:利用社会语境及其图表示进行假新闻检测
    光栅莫尔信号四倍频细分电路模块的设计与仿真研究
    001docker架构介绍
  • 原文地址:https://blog.csdn.net/yangyk125/article/details/126707556
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号