当前位置: 首页 > news >正文

ios qt开发要点

目前关于ios qt的开发资料比较少,这里整理了几个比较重要的开发要点,基于MacOS14 + Xcode15 + Qt5.15 + cmake + iphone真机。

  • cmake报错,报错信息如下
CMake Error at /Users/user/Qt/5.15.5/ios/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:91 (message):
Library not found: MobileCoreServices
Call Stack (most recent call first):
/Users/user/Qt/5.15.5/ios/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:263
(_qt5_Core_process_prl_file)
/Users/user/Qt/5.15.5/ios/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package)
CMakeLists.txt:28 (find_package)

解决方法:添加cmake参数

-DCMAKE_FIND_ROOT_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_SYSTEM_NAME=iOS
-DCMAKE_OSX_SYSROOT=iphoneos
-DCMAKE_OSX_ARCHITECTURES=arm64

并在CMakeLists.txt中添加

if(IOS)target_link_options(${user_project_target_name} PRIVATE "-Wl,-e,_qt_main_wrapper")
endif()

参考来源:https://bugreports.qt.io/browse/QTCREATORBUG-26121

  • 找不到openssl,报错如下
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in thesystem variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR)

实测设置OPENSSL_ROOT_DIR无效,这里可以手动指定相应的cmake变量,在FindOpenSSL.cmake做相应的修改。

FIND_PATH(OPENSSL_INCLUDE_DIRNAMESopenssl/ssl.hPATH_SUFFIXES"include"HINTS${_OPENSSL_INCLUDEDIR}${_OPENSSL_ROOT_HINTS_AND_PATHS}PATH_SUFFIXESinclude
)# add for ios
IF(IOS AND NOT OPENSSL_INCLUDE_DIR)set (OPENSSL_INCLUDE_DIR "/usr/local/opt/opensslios@1.1/include")set (SSL_LIBRARY "/usr/local/opt/opensslios@1.1/lib/libssl.a")set (CRYPTO_LIBRARY "/usr/local/opt/opensslios@1.1/lib/libcrypto.a")list(APPEND OPENSSL_LIBRARIES ${CRYPTO_LIBRARY} ${SSL_LIBRARY})
ENDIF()
  • 打开.pro项目文件报错,无法展开项目文件树
failed to parse default search paths from compiler output

解决方法:在qmake构建步骤添加额外参数

 -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib

参考来源:https://bugreports.qt.io/browse/QTBUG-117225

  • 设置AppIcon无效,解决方法:1)在Xcode中将xcassets文件添加到Build Phases中的Copy Bundle Resources中;2)也可以在cmake如下添加:
set_target_properties(${MODULE_NAME} PROPERTIES RESOURCE "xxx.xcassets")

相关文章:

  • 一件做起来无聊但坚持就很有意义的事情 ---- 复盘
  • 互联网摸鱼日报(2023-11-24)
  • 【高性能计算】CUDA,OpenCL,FPGA 加速,MPI
  • 存储区域
  • 【分布式】分布式事务及其解决方案
  • 景区智慧旅游智能化系统方案:PPT全文58页,附下载
  • Python 将列表拼接为一个字符串,Python join
  • 芯知识 | Flash可更换声音语音芯片—引领音频IC技术革新的新篇章
  • java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  • 【微服务】SaaS云智慧工地管理平台源码
  • 刷题感悟w
  • MR导游情景英语虚拟仿真实训系统应用
  • Handler系列-怎么放入MessageQueue
  • 【iOS】实现评论区展开效果
  • Java【XML 配置文件解析】
  • CSS 专业技巧
  • extract-text-webpack-plugin用法
  • IDEA常用插件整理
  • js数组之filter
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Mithril.js 入门介绍
  • nfs客户端进程变D,延伸linux的lock
  • use Google search engine
  • Vue 重置组件到初始状态
  • 解析带emoji和链接的聊天系统消息
  • 面试总结JavaScript篇
  • 前嗅ForeSpider教程:创建模板
  • 手写双向链表LinkedList的几个常用功能
  • 数据可视化之 Sankey 桑基图的实现
  • 小程序测试方案初探
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • const的用法,特别是用在函数前面与后面的区别
  • FaaS 的简单实践
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #define
  • #includecmath
  • #QT(智能家居界面-界面切换)
  • #大学#套接字
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (7)STL算法之交换赋值
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (八)Spring源码解析:Spring MVC
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四) Graphivz 颜色选择
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)jQuery 基础
  • (转)linux下的时间函数使用
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .netcore 获取appsettings