使用AI能力编译ARM版本的截图软件

前言

笔者使用m系列芯片的mac,需要一款开源截图软件,需要标注功能,然后发现了开源项目https://github.com/SunnyCapturer/FLIPPED,比较美观,关键是功能简单,简单就是王道,但是项目已经好几年没更新了,没有ARM版本的软件,尝试自编译ARM应用。

笔者本身没有任何qt开发经验,也没有mac桌面软件开发经验,借助AI能力使用开源项目来实现,分享经验。

开源项目问题

这个开源项目是简单,截图的关键功能有,其他用的少的一律没有,简洁。但是作者自己并不提供mac版本的app,老版本提供了x86的app,对于ARM版本应用就需要转义,且mac OS 27开始准备移除rosetta。尝试编译ARM版本app,其中代码部分使用AI提示解决,效果图:

自编译

准备阶段

MacOS / Linux

  • Kit Tools:

    • MacOS: MacOS 10.15 & Qt 5.15.2 & CMake 3.24 & Clang 12.0
    • Linux: Ubuntu 20.04 & Qt 5.15.2 & CMake 3.24 & GCC 9.4
  • Compile Step:

    复制代码
    git clone --recursive https://github.com/XMuli/Flipped.git
    cd Flipped
    mkdir build & cd build
    cmake ..
    make -j16

笔者是macOS 15系统,m4,笔者试图使用qt6编译,发现太多修改项了,所以使用brew安装了qt5

其他都是系统自带,包括xcode的插件,步骤执行

1. qt5安装

brew install qt@5

这步只要配置好国内源,可以正常执行

2. git代码拉取

然后执行git clone,这步需要科学上网,可以快速拉取

3. 目录准备

创建目录时需要分2步,先mkdir 再 cd

4. cmake

当执行cmake时问题出现了,其实这里不需要AI能力

问题1:找不到qt命令

毕竟qt5安装是通过brew,没有配置环境变量,当然如果按照qt最新版,brew会自动配置环境变量

所以需要vim ~/.zshrc

bash 复制代码
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"

source ~/.zshrc

问题2:第三方包的make最小版本限制

在QHotkey中CMakeLists文件的cmake_minimum 3.1限制,笔者电脑自带的clang比较新,需要3.5才能,修改为如下解决

cmake_minimum_required(VERSION 3.5)

问题3:找不到qt的lib

brew安装目录在,/opt/homebrew/Cellar/qt@5/5.15.18/lib,但是识别的brew目录在/opt/homebrew/lib下,所以可以ln -s 创建软链接

此时可以正常cmake了,但是问题还有一堆

5. make

通过上面的方式,可以正常cmake,但是make时也是一堆问题

问题1:std::map<const QString, const QString> map的k v使用const修饰

直接编译报错,笔者很久没写c++代码了,通过AI问答解决,移除const常量修饰,毕竟String应该是常量

std::map<QString, QString>

问题2:第三方编译包目录不正确
bash 复制代码
[ 97%] Linking CXX executable /Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED
ld: warning: search path '/Users/huahua/Downloads/Flipped/src/../bin/bin' not found
ld: warning: search path '/Users/huahua/Downloads/Flipped/src/../bin/3rdparty/QHotkey' not found
/bin/sh:  /Users/huahua/Downloads/Flipped/src/../bin/FLIPPED.app: No such file or directory
make[2]: *** [/Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED] Error 127
make[2]: *** Deleting file `/Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED'
make[1]: *** [src/CMakeFiles/FLIPPED.dir/all] Error 2
make: *** [all] Error 2

这个就奇葩了,发现第三方包并未编译,所以笔者没改cmake的文件脚本,直接编译第3方包,然后手动创建这些目录,把编译好的内容放进去

直接在第三方包的目录

mkdir build

cd build

cmake ..

make

然后找到如下包,放到上面要求的目录

问题3:编译macOS需要x11

实际上macOS不需要x11,x11是linux的窗口管理器,这个简单,去掉x11的模块引入,cmake文件注释掉

cpp 复制代码
if (UNIX)
#    target_link_libraries(${project_name} PRIVATE ${qt_version_moduls} qhotkey X11)
    target_link_libraries(${project_name} PRIVATE ${qt_version_moduls} qhotkey)
else()
    target_link_libraries(${project_name} PRIVATE ${qt_version_moduls} qhotkey)
endif()
问题4:2行指令错误
bash 复制代码
[ 97%] Linking CXX executable /Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED
/bin/sh:  /Users/huahua/Downloads/Flipped/src/../bin/FLIPPED.app: No such file or directory
make[2]: *** [/Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED] Error 127
make[2]: *** Deleting file `/Users/huahua/Downloads/Flipped/bin/FLIPPED.app/Contents/MacOS/FLIPPED'
make[1]: *** [src/CMakeFiles/FLIPPED.dir/all] Error 2
make: *** [all] Error 2

这个很奇怪,查询AI,分析代码,发现如下代码报错

笔者直接在cmake的代码指令注释掉,看代码,应该是app打包的过程,实际上不需要,只需要app文件即可。

再次执行make,执行成功。

问题5:app信息优化

执行成功的app文件,实际上很多信息不全,没有图标

修改info.plist文件,搬运图标到Resources下,补全信息

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleExecutable</key>
	<string>FLIPPED</string>
	<key>CFBundleGetInfoString</key>
	<string>FLIPPED</string>
	<key>CFBundleIconFile</key>
	<string>logo_archive</string>
	<key>CFBundleIdentifier</key>
	<string>https://thinkymate.com</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleLongVersionString</key>
	<string>2.3.0</string>
	<key>CFBundleName</key>
	<string>FLIPPED</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.3</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1.3.2</string>
	<key>CSResourcesFileMapped</key>
	<true/>
	<key>NSHumanReadableCopyright</key>
	<string></string>
</dict>
</plist>

总结

其实笔者试图使用AI写一个截图工具,但是AI还是不是很行,写的乱七八糟,当然有可能笔者没写过桌面程序,所以干脆使用开源项目编译。但是即使编译也遇到了很多问题,如果使用AI解决估计大部分没有程序经验的解决不了,因为实际的问题和代码不一定有直接的关联,所以AI辅助解决问题,笔者成功的使用开源项目编译了ARM版本的mac截图app。但是还是有warn未解决,不影响使用就不解决了。

相关推荐
OpenVINO 中文社区2 小时前
OpenVINO™正式进入 llama.cpp:GGUF 模型现已支持 Intel CPU、GPU 与 NPU
人工智能·openvino·英特尔
ZKNOW甄知科技2 小时前
数智同行:甄知科技2026年Q1季度回顾
运维·服务器·人工智能·科技·程序人生·安全·自动化
呆呆敲代码的小Y2 小时前
【Unity工具篇】| 游戏完整资源热更新流程,YooAsset官方示例项目
人工智能·游戏·unity·游戏引擎·热更新·yooasset·免费游戏
jikemaoshiyanshi2 小时前
B2B企业GEO服务商哪家好?深度解析径硕科技(JINGdigital)及其JINGEO产品为何是首选
大数据·运维·人工智能·科技
Lab_AI2 小时前
浩天药业携手创腾科技,开启研发数字化新篇章!电子实验记录本(ELN)落地浩天药业
人工智能
supericeice2 小时前
大模型建筑隐患管理方案怎么做?创邻科技用知识图谱、图数据库和企业AI大脑打通隐患问答、整改与推荐
人工智能·科技·知识图谱
蕤葳-2 小时前
非编程背景学习AI的方法
人工智能
北京耐用通信2 小时前
不换设备、不重写程序:耐达讯自动化网关如何实现CC-Link IE转Modbus TCP的高效互通?
人工智能·科技·物联网·网络协议·自动化·信息与通信
计算机毕业设计指导2 小时前
基于机器学习和深度学习的恶意WebURL检测系统实战详解
人工智能·深度学习·机器学习·网络安全