资讯详情

配置 Qt 开发环境

📅 2026/10/29 19:35:13 | 华诺云谱 👁 阅读
配置 Qt 开发环境
文章目录官方下载配置 Windows 开发环境配置 Qt6.7.3 vs2019配置 Ubuntu 开发环境配置 MacOS 开发环境创建开发者证书和发布证书安装 Xcode安装 Qt创建项目(CMake)开发和发布证书添加应用程序图标拷贝依赖库签名打包 (.dmg)安装 Homebrew制作.app生成.dmg脚本公证注意事项官方下载Qt 官方提供在线安装器Online Installer通过它可以按需勾选 Qt 版本、编译套件和附加模块相比离线包体积更小、升级也更方便。需要在 Qt 注册免费账号:https://login.qt.io/register在线安装地址https://download.qt.io/official_releases/online_installers/配置 Windows 开发环境配置 Qt6.7.3 vs2019https://visualstudio.microsoft.com/zh-hans/downloads/ 下载 Visual Studio 2026 生成工具 - 勾选 vs2019 相关的 c 库鼠标双击 vs_BuildTools.exe鼠标双击在线安装器,登录账号后, 选择 Qt 6.7.3配置 Ubuntu 开发环境直接安装./qt-online-installer-macOS-x64-4.10.0 --mirror https://mirrors.cloud.tencent.com/qt/配置 MacOS 开发环境创建开发者证书和发布证书注:只有开发者账号主体才能创建 Apple Developer ID创建 Apple Developer ID 时需要选择一个macOS电脑创建的证书从钥匙串证书中创建一个本地证书然后上传即可。安装 XcodeApp Store 中搜索直接安装安装 QtMacOS 在线安装 Qt 加速方式从官网下载 qt-online-installer-macOS-x64seerseerdeMac-mini qt-online-installer-macOS-x64-4.10.0.app%cd Contents seerseerdeMac-mini Contents%ls _CodeSignature Info.plist MacOS PkgInfo Resources seerseerdeMac-mini Contents%cd MacOS seerseerdeMac-mini MacOS%ls qt-online-installer-macOS-x64-4.10.0seerseerdeMac-mini MacOS%./qt-online-installer-macOS-x64-4.10.0--mirror https://mirrors.cloud.tencent.com/qt/创建项目(CMake)加上 MACOSX_BUNDLEif(APPLE)# 添加图标 - 设置图标文件路径set(APP_ICON${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/appImages/logo.icns)add_executable(${PROJECT_NAME}MACOSX_BUNDLE${SOURCES}${HEADERS}${FORMS}${APP_ICON})# 设置macOS Bundle属性set_target_properties(${PROJECT_NAME}PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIERcom.seer.appNameMACOSX_BUNDLE_BUNDLE_VERSION1.0.0.0MACOSX_BUNDLE_SHORT_VERSION_STRING1.0MACOSX_BUNDLE_ICON_FILElogo.icnsMACOSX_BUNDLE_BUNDLE_NAMEappNameMACOSX_BUNDLE TRUE MACOSX_RPATH ON)# 设置图标文件属性set_source_files_properties(${APP_ICON}PROPERTIES MACOSX_PACKAGE_LOCATIONResources)else()add_executable(${PROJECT_NAME}WIN32${SOURCES}${HEADERS}${FORMS}ICO.rc)endif()开发和发布证书如果有开发者账号(充值后的)可以使用命令查看seerseerdeMac-mini createDmg % security find-identity-v-pcodesigning1)BB56D563567D2E884B45B28D065EEBBE93EB719BApple Development: 419087137qq.com (******)2)6EF78D6AD917CDE506F1108B971CBC437ED1C2F4Apple Development: 长泉 胡 (******)5)38EAB8D9D02854BD66AEB84B7F699EC0ADB3A43DDeveloper ID Application: Shanghai ****** Technology Co., Ltd. (******)5valid identities found#只有开发者账号主体才能创建 Apple Developer ID发布的 Apple Developer ID 就是Developer ID Application: Shanghai ****** Technology Co., Ltd. (******)创建 Apple Developer ID 需要 macOS 电脑上钥匙串访问-证书助理-从证书颁发机构请求证书-保存到硬盘CertSigningRequest.certSigningRequest 在apple开发者证书网页上传该文件即可。添加应用程序图标准备一个 .icns格式的图标文件。如果没有可以找一张 .png 使用命令行生成generate_icons.sh 把 logo.png 生成 logo.icons 脚本#!/bin/bash# 删除现有图标集文件夹如果存在if[-dlogo.iconset];thenrm-rflogo.iconsetfi# 创建新的图标集文件夹mkdirlogo.iconset# 检查原始图标文件是否存在if[!-flogo.png];thenecho错误: 请确保当前目录下存在 logo.png 文件exit1fi# 生成不同尺寸的图标文件sips-z1616logo.png--outlogo.iconset/icon_16.png sips-z1616logo.png--outlogo.iconset/icon_162x.png sips-z3232logo.png--outlogo.iconset/icon_32.png sips-z3232logo.png--outlogo.iconset/icon_322x.png sips-z6464logo.png--outlogo.iconset/icon_64.png sips-z6464logo.png--outlogo.iconset/icon_642x.png sips-z128128logo.png--outlogo.iconset/icon_128.png sips-z128128logo.png--outlogo.iconset/icon_1282x.png sips-z256256logo.png--outlogo.iconset/icon_256.png sips-z256256logo.png--outlogo.iconset/icon_2562x.png sips-z512512logo.png--outlogo.iconset/icon_512.png sips-z512512logo.png--outlogo.iconset/icon_5122x.png# 生成.icns文件iconutil-cicns logo.iconsetecho图标集创建完成生成了 logo.icns 文件拷贝依赖库注意资源和配置文件只能放到.app/Contents/Resources目录中,否则签名过不了其中 Contents/MacOS/中就有你生成的 appName (unix执行文件)把 Qt 依赖库加到 .app 中, 如果发现部分 .dylib 没有拷贝到 .app/Contents/Frameworks下面的指令再执行一次如果按上述 CMake 项目logo.icns 在包的 .app/Contents/Resources/appImages/logo.icns自动拷贝依赖库脚本 macdeployqt_1.sh#!/bin/bashMacdeployqt_Dir/Users/seer/Desktop/hu/Qt/6.7.3/6.7.3/macos/bin/macdeployqtAPP_PATH../appName.app#替换成真实的# 安全拷贝文件夹函数# 参数1: 源文件夹路径# 参数2: 目标文件夹路径copy_folder_safe(){localsource_dir$1localtarget_dir$2# 检查参数if[-z$source_dir]||[-z$target_dir];thenecho❌ 错误: 需要提供源文件夹和目标文件夹路径echo用法: copy_folder_safe 源文件夹 目标文件夹return1fi# 检查源文件夹是否存在if[!-d$source_dir];thenecho❌ 错误: 源文件夹不存在:$source_dirreturn1fi# 如果目标文件夹存在则删除if[-d$target_dir];thenecho⚠️ 目标文件夹已存在正在删除:$target_dirrm-rf$target_dirif[$?-ne0];thenecho❌ 错误: 无法删除目标文件夹:$target_dirreturn1fifi# 创建目标文件夹的父目录如果不存在mkdir-p$(dirname$target_dir)# 执行拷贝echo 正在拷贝文件夹...cp-R$source_dir$target_dirif[$?-eq0];thenecho✅ 文件夹拷贝成功:$source_dir-$target_dirreturn0elseecho❌ 文件夹拷贝失败return1fi}# 函数copy文件copy_files(){#拷贝额外的文件夹#copy_folder_safe ../appImages ${APP_PATH}/Contents/Resources/appImages#copy_folder_safe ../appInfo ${APP_PATH}/Contents/Resources/appInfo#copy_folder_safe ../RoPlugins ${APP_PATH}/Contents/MacOS/RoPluginsecho正在执行 macdeployqt...${Macdeployqt_Dir}${APP_PATH}}# 主流程main(){# 文件copy_files}# 执行主函数main签名制作签名脚本 codesign_2.sh#!/bin/bash# macOS 应用签名工具# 功能自动清理无效文件 分层签名 .dylib, .framework, .app# 配置区 CERT_IDDeveloper ID Application: Shanghai ****** Technology Co., Ltd. (******)APP_PATH../appName.app#http://timestamp.digicert.comTIMESTAMP_SERVER# # 函数带颜色输出error_echo(){echo-e\033[31m❌$1\033[0m;}success_echo(){echo-e\033[32m✅$1\033[0m;}step_echo(){echo-e\033[34m$1\033[0m;}# 函数检查网络连通性check_timestamp_server(){if!curl--connect-timeout10-sI$TIMESTAMP_SERVER|grep-qHTTP/.* 400;thenerror_echo时间戳服务器不可达return1fireturn0}# 函数签名操作sign_target(){localtarget$1step_echo签名:$(basename$target)codesign-s$CERT_ID\--optionsruntime\--timestamp\-f\$target||return1# 验证签名if!codesign-vvv$target/dev/null;thenerror_echo签名验证失败:$targetreturn1fireturn0}# 函数清理无效文件clean_invalid_files(){return0}# 主流程main(){# 检查证书if!security find-identity-pcodesigning|grep-q$CERT_ID;thenerror_echo证书不存在:$CERT_IDexit1fi# 检查时间戳服务#check_timestamp_server || {# error_echo 时间戳服务不可用 - 尝试无时间戳签名# TIMESTAMP_SERVER#}# 清理无效文件clean_invalid_files# 签名动态库step_echo签名 .dylib 文件...find$APP_PATH/Contents-typef-name*.dylib|whileread-rfile;dosign_target$file||exit1done# 签名框架特殊处理QtWebEnginestep_echo签名 .framework...find$APP_PATH/Contents/Frameworks-typed-name*.framework|whileread-rfw;do# 优先处理QtWebEngine内部应用if[[$fw*QtWebEngineCore.framework]];thensign_target$fw/Versions/A/Helpers/QtWebEngineProcess.app||exit1fisign_target$fw||exit1done# 签名主应用step_echo签名主应用...sign_target$APP_PATH||exit1# 最终验证step_echo验证签名...ifcodesign--verify--deep--strict$APP_PATH;thensuccess_echo签名验证通过elseerror_echo最终验证失败exit1fi}# 执行主函数main打包 (.dmg)安装 Homebrew#安装curl-fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh#安装后验证 brew 是否可用brew--version#安装create-dmgbrew install create-dmg#验证是否可用create-dmg--version制作.app生成.dmg脚本创建 install.sh (不要从 windows 拷贝过来)#!/bin/bash# 定义变量APP_NAMEappNameAPP_PATH../appName.app# 请确保此路径正确指向实际的 .app 文件DMG_NAME${APP_NAME}_InstallerSOURCE_FOLDER/tmp/${APP_NAME}_dmg_sourceBACKGROUND_IMG./logo.png# 请确保此图片文件存在VOLUME_NAME${APP_NAME}Installer# 名称中可包含空格# 清理并创建临时工作区echo准备临时目录...rm-rf$SOURCE_FOLDERmkdir-p$SOURCE_FOLDER# 关键步骤将应用程序复制到源文件夹echo复制应用程序...# 请检查 APP_PATH 指向的 .app 包是否存在if[-d$APP_PATH];thencp-R$APP_PATH$SOURCE_FOLDER/elseecho错误未在路径 $APP_PATH 找到应用程序。请检查 APP_PATH 变量。exit1fi# 清理可能存在的旧 DMG 文件rm-f${DMG_NAME}.dmg# 使用 create-dmg 创建磁盘映像echo开始创建 DMG 文件...create-dmg\--volname$VOLUME_NAME\--background$BACKGROUND_IMG\--window-pos200120\--window-size800450\--icon-size100\--iconappName.app240190\--hide-extensionappName.app\--app-drop-link550190\${DMG_NAME}.dmg\$SOURCE_FOLDER# 检查命令是否成功if[$?-eq0];thenecho✅ DMG 文件创建成功:${DMG_NAME}.dmgelseecho❌ DMG 文件创建失败。exit1fi如果没有运行权限可以通过sudo chmod ax install.sh #修改为运行权限公证#生成 appName.profile 凭证(只需要一次)xcrun notarytool store-credentialsappName.profile\--apple-id419087137qq.com\--team-id团队ID\--password专属密码#返回 提供的--apple-id--team-id--password 生成的凭证This process stores your credentials securelyinthe Keychain. You reference these credentials later using a profile name. Validating your credentials... Success. Credentials validated. Credentials saved to Keychain. To use them, specify--keychain-profileappName.profile#上传.dmg并公证seerseerdeMac-mini createDmg % xcrun notarytool submitappName_Installer.dmg\--keychain-profileappName.profile\--wait#返回事物 id,可以根据这个 id 查询公证结果Conducting pre-submission checksforappName_Installer.dmg and initiating connection to the Apple notary service... Submission ID received id: 573638c2-0b61-43aa-b2ad-xxxxxxxxx# 使用id查询结果xcrun notarytool info 573638c2-0b61-43aa-b2ad-xxxxxxxxx --keychain-profileappName.profile# 确认公证成功后执行xcrun stapler stapleappName_Installer.dmg注意事项如果 .app 签名失败最好把 .app 删除重新生成 再执行 macdeployqt 重来一遍否则可能有诡异的问题手动删除 .app 一定要重新 cmake 一次否则不会生成 .app/Contents/info.plist 文件
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑