在 deepin linux 系统下编译 qtcreator 4.8.0 版本,可是按照官方 README 却始终编译不通过,遇到了以下几个问题,并列出了相关解决方案。当然官方的 README 上所说的编译依赖还是要装上的。
问题0
这个可能不是必须的
不要在源码目录下建立 build/build-debug/build-release 之类的构建目录, 否则会出现一些奇奇怪怪的问题, 导致编译失败
只需要直接在源码根目录下执行:
1 | # 仅供参考 |
问题1
1 | g++ -Wl,-z,origin '-Wl,-rpath,$ORIGIN:$ORIGIN/..:$ORIGIN/../lib/qtcreator' -Wl,--no-undefined -Wl,-z,origin -Wl,-rpath,/usr/lib/llvm-7/lib -Wl,--exclude-libs,ALL -Wl,-O1 -shared -Wl,-soname,libClangFormat.so -o libClangFormat.so .obj/release-shared/clangformatconfigwidget.o .obj/release-shared/clangformatindenter.o .obj/release-shared/clangformatplugin.o .obj/release-shared/clangformatutils.o .obj/release-shared/moc_clangformatconfigwidget.o .obj/release-shared/moc_clangformatplugin.o -L/home/ri/coding/qt-creator/lib/qtcreator -L/home/ri/coding/qt-creator/lib/qtcreator/plugins -lCppTools -lProjectExplorer -lTextEditor -lCore -lCPlusPlus -lQtcSsh -lAggregation -lExtensionSystem -lUtils -L/usr/lib/llvm-7/lib -lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic -lLLVM-7 -lQt5Widgets -lQt5Gui -lQt5Concurrent -lQt5Network -lQt5Core -lGL -lpthread |
报错里提到找不到 clangToolingInclusions
这个库文件, 根据 -L/usr/lib/llvm-7/lib
可知构建系统要在这个目录下找, 尝试了以下三个方法:
- 手动进入此目录搜索的确没有找到
- 故而又在
/usr/lib
目录搜索依然没有 - 接着使用
apt-file search clangToolingInclusions
命令搜索看是不是因为某个包没装, 结果依然没有
这就奇怪了, 难道是 debian 系的系统中没有这个库文件吗? 被改名了?
ag clangToolingInclusions
src/shared/clang/clang_installation.pri 文件中:
1 | !isEmpty(LLVM_VERSION) { |
移除7.0 clang llvm
创建6.0链接
Reading /home/ri/coding/qt-creator/src/plugins/clangformat/clangformat.pro
sh: 1: llvm-config: not found
Project WARNING: Cannot determine clang version. Set LLVM_INSTALL_DIR to build the Clang Code Model
Project file(clangformat.pro) not recursed because all requirements not met:
!isEmpty(CLANGFORMAT_LIBS)
搞完才发现:
Get LLVM/Clang for the Clang Code Model
The Clang Code Model depends on the LLVM/Clang libraries. The currently supported LLVM/Clang version is 6.0.
问题2
1 | In file included from source/collectbuilddependencyaction.h:28:0, |
目录: qt-creator/src/tools/clangpchmanagerbackend
1 | void InclusionDirective(clang::SourceLocation hashLocation, |
移除 override