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

【clang】ubuntu 22.04 使用clang编译qt项目,并采用极致性能优化参数

build_with_clang.sh

#!/bin/bash # ============================================================================== # Qt 项目极致性能构建脚本 v3.0 (修复 qmake 编译器检测问题) # # 主要变更: # - 使用 -spec linux-clang 强制指定 Clang 工具链规格 # - 显式设置所有必要的编译器和链接器变量 # ============================================================================== # --- 1. 脚本初始化 --- set -e set -u set -o pipefail echo "--- [1] 开始极致性能构建流程 (源码外构建模式) ---" # --- 2. 定义并准备构建目录 --- BUILD_DIR="build" if [ -d "$BUILD_DIR" ]; then echo "--- [2] 发现旧构建目录 '$BUILD_DIR',正在删除... ---" rm -rf "$BUILD_DIR" fi echo "--- [2] 创建新构建目录 '$BUILD_DIR'... ---" mkdir -p "$BUILD_DIR" # --- 3. 设置完整 LLVM/Clang 工具链环境变量 --- echo "--- [3] 设置 Clang/LLVM 编译环境变量 ---" # 强制指定 qmake 使用的 C++ 编译器 export QMAKE_CXX=clang++ # 强制指定 qmake 使用的链接器 export QMAKE_LINK=ld.lld # 强制指定 qmake 使用的 C 编译器 export QMAKE_CC=clang # 强制指定 qmake 使用的归档器 export QMAKE_AR=llvm-ar # 强制指定 qmake 使用的 ranlib export QMAKE_RANLIB=llvm-ranlib # 为了兼容性,也设置传统的环境变量 export CXX=clang++ export CC=clang export LD=ld.lld export AR=llvm-ar export RANLIB=llvm-ranlib echo " QMAKE_CXX = $QMAKE_CXX" echo " QMAKE_LINK = $QMAKE_LINK" # --- 4. 进入构建目录并执行 qmake --- echo "--- [4] 进入构建目录并生成 Makefile... ---" ( cd "$BUILD_DIR" # 执行 qmake 命令,并明确指定工具链规格 # -spec linux-clang: 告诉 qmake 使用为 Linux Clang 预设的配置文件,这是解决问题的关键 # ..: 指向项目根目录 # CONFIG+=release: 启用发布模式 # 后面的优化标志保持不变 qmake -spec linux-clang .. CONFIG+=release \ QMAKE_CXXFLAGS_RELEASE="-O3 -march=native -flto" \ QMAKE_LFLAGS_RELEASE="-O3 -flto" # --- 5. 执行 make 进行编译 --- echo "--- [5] 开始并行编译项目... ---" CORES=$(nproc) make -j${CORES} 2>&1 | tee build.log ) # --- 6. 构建完成 --- echo "" echo "==============================================" echo " 构建完成!" echo "==============================================" echo "所有构建产物已生成在 '$BUILD_DIR' 目录中。" echo "详细的编译日志请查看: $BUILD_DIR/build.log" exit 0

编译日志

--- [1] 开始极致性能构建流程 (源码外构建模式) --- --- [2] 发现旧构建目录 'build',正在删除... --- --- [2] 创建新构建目录 'build'... --- --- [3] 设置 Clang/LLVM 编译环境变量 --- QMAKE_CXX = clang++ QMAKE_LINK = ld.lld --- [4] 进入构建目录并生成 Makefile... --- Info: creating stash file /home/yeqiang/untitled/build/.qmake.stash --- [5] 开始并行编译项目... --- clang++ -c -pipe -O3 -march=native -flto -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_CORE_LIB -I../../untitled -I. -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-clang -o main.o ../main.cpp clang++ -ccc-gcc-name g++ -O3 -flto -o untitled main.o /usr/lib/x86_64-linux-gnu/libQt5Core.so -lpthread ============================================== 构建完成! ============================================== 所有构建产物已生成在 'build' 目录中。 详细的编译日志请查看: build/build.log
http://www.jsqmd.com/news/97882/

相关文章:

  • R-Python函数接口适配难倒百万程序员?这4个工具让你效率提升10倍
  • SAQP工艺是如何代替EUV的?
  • TikZJax终极指南:浏览器中运行TikZ绘图的完整解决方案
  • 如何用轻量工具彻底改变服务器运维体验
  • Flutter网络请求实战:Dio快速入门与最佳实践
  • 2025 Google DevFest|郭霖带你 “庖丁解牛“ Android 16 自适应的秘密!
  • Whistle客户端:一款强大易用的网络调试工具
  • MinIO对象存储权限管理安全实践指南
  • R语言回归诊断核心方法精讲(农业数据科学家私藏笔记曝光)
  • 【Matlab】电阻层析成像逆问题的仿真研究
  • Excel插件:《成绩统计排名》和《SchoolTools》下载与安装
  • 【R语言基因富集分析终极指南】:解决90%研究者卡壳的P值校正难题
  • Excel插件教程:《成绩统计排名》和《SchoolTools》
  • 实战指南:用Actix Web打造高性能微服务架构
  • 【R Shiny高级技巧】:3步实现网页可视化结果自动导出,效率提升300%
  • 国内企业免费服务器试用云平台选型:以技术可靠性为核心,AWS 成长期可用性工程参照 - 品牌排行榜
  • 3分钟零代码搞定企业级数据大屏!DataV让数据可视化如此简单
  • 计算机毕设Java基于Android的“课堂管理助手”移动应用开发 基于Java与Android的智能课堂管理系统开发 Java驱动的Android平台课堂管理应用设计与实现
  • C++后台开发学习路线
  • Flutter 与开源鸿蒙(OpenHarmony)的融合:跨平台开发新纪元
  • 2025年口碑不错的抖音代运营企业推荐:5家服务优质公司全解 - 工业推荐榜
  • gofakeit扩展开发终极实战:从零构建自定义数据生成器
  • 【SPIE出版 | IE检索】第二届光电科学与智能传感国际学术会议(ICOIS 2026)
  • Amaze File Manager云存储集成实战:打造个人云端文件管理中心
  • 古典密码学分类和加密原理概括
  • Flutter 与开源鸿蒙(OpenHarmony)深度集成:从原理到实战进阶
  • 5大告警聚合技巧:让你的监控系统不再“狼来了“
  • 什么是激光解键合?
  • AI编码实践:从Vibe Coding到SDD
  • Java异步编程神器!CompletableFuture让你的代码快3倍