记一次LLVM平行宇宙修包实战

  最近加入了LLVM平行宇宙计划小组,在小组内提交了一定数量的PR。这个计划究竟是做什么的呢?LLVM平行宇宙计划是基于LLVM技术栈构建openEuler软件包,大白话讲就是原本一个软件包是用gcc/g++编译的,现在换成clang/clang++编译。虽然只是切换了编译工具,但是偶尔也有可能出现一些意想不到的错误。

  我选择修的软件包是qt-mobility,地址在这:Show Mega:24.03:SP1:Everything / qt-mobility - 开源软件构建与测试

  失败日志如下

  可以看到error部分,gcc/g++并不支持--config选项,按理来说,OBS工程配置已经将编译工具链切换为LLVM,但是编译的时候仍然出现gcc/g++,这是因为在Makefile等编译脚本里面显式指定了gcc/g++作为编译器,因此需要手动改回来。不过,这个项目里面并没有Makefile,它使用qmake根据.pro结尾的文件来生成Makefile。

  这段日志呈现了qmake大量读取.pro文件的过程,既然Makefile通过qmake生成,那么可以在qmake读取.pro文件的时候传入跟编译器有关的命令行参数,问题自然就解决了。qmake QMAKE_CC=clang QMAKE_CXX=clang++ xxx.pro,形如这样。

  我改动的部分已标注好了,主要就是根据编译工具链环境来添加一个宏,一开始我只添加了QMAKE_CXX=clang++,依然编译错误(因为编译过程也用到了gcc,但是gcc不支持--config选项),后面索性加上了QMAKE_CC=clang,于是编译成功了。工程地址在这:Show home:Thomas134:branches:Mega:24.03:SP1:Everything / qt-mobility - 开源软件构建与测试

  今天是年初二,有人开开心心过年,有人依旧在工作中奋战,希望每个人都能在2025年实现自己的梦想。

posted @   ChebyshevTST  阅读(133)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示