查看完整版本: [-- Qt6 cmake编译问题 --]

QTCN开发网 -> Qt安装与发布 -> Qt6 cmake编译问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

hnwdx 2021-01-20 18:15

Qt6 cmake编译问题

我是按照:
https://blog.csdn.net/sdhongjun/article/details/112058149
进行编译的,出现如下图错误如何解决?即moc.exe都没自动生成,所以报错误。

[attachment=22212]

lixinwei 2021-01-20 22:37
你遇到的问题似乎跟https://bugreports.qt.io/browse/QTBUG-88015是一样的
解决方法是要把自己下载的CMake的bin目录添加到环境变量中,避免使用VS2019自带的CMake
你参考的这个教程也提到了要添加到环境变量,可能你没仔细看

lixinwei 2021-01-20 22:51
另外,他这个教程有些地方写的不太好:
不建议直接在源码目录下编译,这会污染源码,即使运行ninja clean,也无法清理干净
建议在源码之外新建一个目录,然后用cd命令切换到这个新建的目录
接下来依次运行:
<源码目录>/configure -prefix <安装目录> -debug-and-release
(他这个教程还用了-opensource选项,-opensource  -confirm-license选项在CMake构建系统中完全没有用,加和不加没有任何区别)
ninja -j <CPU的线程数>
(ninja默认只用6个线程编译;如果你的CPU少于6个线程,同时开6个线程也不会提高效率;如果CPU多于6个线程,更应该提高CPU的利用效率)
ninja install

hnwdx 2021-01-22 08:38
果真是高手啊。我以为vs2019带的cmake版本够新了,结果新中更有新中要求。


hnwdx 2021-01-22 10:27
问题分析透彻,追问一下:官方源码编译出来的llvm没有libclang_static.lib,导致QDoc不能正常编译,怎么办

lixinwei 2021-01-22 16:56
hnwdx:
问题分析透彻,追问一下:官方源码编译出来的llvm没有libclang_static.lib,导致QDoc不能正常编译,怎么办

请下载Qt官方提供的libclang,这是专门用来编译qdoc的clang,作了一些特殊的处理。Qt官方也是用这个clang来编译的qdoc的。
下载链接:https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/prebuilt/libclang/qt/
对于Qt5,请务必选择6.0版本的;对于Qt6,建议选择11.0版本或12.0版本
编译前需要设置几个环境变量:
  1. set LLVM_INSTALL_DIR=<clang安装目录,该目录下应当有include、lib、bin等文件夹>
    set QDOC_USE_STATIC_LIBCLANG=1


上面那个链接的上级目录(https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/prebuilt/libclang/)下也有很多clang,那些是动态编译的clang,只有编译 Qt Creator 和 Qt for Python 时才要用到,不要下载错了

lixinwei 2021-01-22 18:18
hnwdx:果真是高手啊。我以为vs2019带的cmake版本够新了,结果新中更有新中要求。[表情]
(2021-01-22 08:38)

vs2019 16.8版本自带的cmake是3.18.2
如果要-debug-and-release,则需要的最低版本是3.18.3
如果只编译release,3.18.2也可以用

Qt开发团队中负责CMake构建系统的开发人员或多或少也在参与CMake本身的开发,因此CMake版本升级会考虑到Qt的需要,编译Qt 6也尽量需要新版本的CMake

fsu0413 2021-01-22 23:46
说实话为了这个我都在我的CentOS8中自行编译了一个CMake 3.19
Qt6的第一版CMake兼容是3.15,后来的版本需求越来越高,导致最终Qt6和CMake 3.18.4基本绑定了。。。。
顺带一提 VS2017自带的CMake是3.12

lixinwei 2021-01-23 00:24
fsu0413:说实话为了这个我都在我的CentOS8中自行编译了一个CMake 3.19
Qt6的第一版CMake兼容是3.15,后来的版本需求越来越高,导致最终Qt6和CMake 3.18.4基本绑定了。。。。
顺带一提 VS2017自带的CMake是3.12 (2021-01-22 23:46)

目前dev分支和6.0分支已经把最低要求的CMake版本改成了3.16
如果要-debug-and-release,当CMake版本低于3.18.3时,会显示warning

即将发布的Qt 6.0.1应该会包含这一更改


hnwdx 2021-01-23 16:34
完美搞定,谢谢大侠指点!

fsu0413 2021-01-24 23:09
lixinwei:目前dev分支和6.0分支已经把最低要求的CMake版本改成了3.16
如果要-debug-and-release,当CMake版本低于3.18.3时,会显示warning
即将发布的Qt 6.0.1应该会包含这一更改
....... (2021-01-23 00:24) 

啊这。。。。。。

hnwdx 2021-01-25 10:11
lixinwei:请下载Qt官方提供的libclang,这是专门用来编译qdoc的clang,作了一些特殊的处理。Qt官方也是用这个clang来编译的qdoc的。
下载链接:https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/prebuilt/libclang/qt/
对于Qt5,请务必选择6.0版本的;对于Qt6,建议选择10.0 .. (2021-01-22 16:56) 

再追问一下,编译出来的assistant.exe不带.qch文件内容,源码目录下也不多,需要自己添加吗?

lixinwei 2021-01-25 21:28
hnwdx:
再追问一下,编译出来的assistant.exe不带.qch文件内容,源码目录下也不多,需要自己添加吗?

qch文件就是Qt文档,需要另外编译。
  1. <源码目录>/configure -prefix <安装目录> -release
    cmake --build . --target qtbase/src/plugins/platforms/all qtbase/src/plugins/sqldrivers/all --parallel <CPU线程数>
    cmake --build . --target docs --parallel <CPU线程数>
    cmake --build . --target install_docs

下次可以在按照2楼的步骤编译Qt源码之后,不关闭控制台,再依次运行上面的第3行和第4行,这样源码和文档能一并编译

hnwdx 2021-01-26 09:19
谢谢,全部搞定。

gardenhill 2021-10-23 00:01
谢谢分享, 受教了


查看完整版本: [-- Qt6 cmake编译问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled