My C++ Development.
前言:不包含qtwebengine
。
一、准备文件
(1)mingw64-13.2.0
下载链接:
,ucrt64_13.2_ucrt_posix_rev6_msys2.7z【蓝奏云】。
(2)qt6.6.3源码
下载链接:
Download QT 6.6.3,我这里下载的是:qt-everywhere-src-6.6.3.zip
。
(3)LLVM 18.1.5,编译文档用。
不编译文档,跳过该文章相关部分就行。
下载链接:
LLVM 18.1.5,我这里下载的是:llvmorg-18.1.5.zip
。
(4)Python
如果你已有Python
,貌似只要是Python3
就行,但是请确保路径无空格和中文。
下载链接:
python-3.11.9-amd64.exe,安装时请避免使用带空格和中文的路径。
或者你的系统有scoop
包管理,可以使用:
scoop install python
(5)Ninja 和 CMake
下载链接:
ninja-win.zip,将解压后的exe
目录添加到PATH
环境变量。
或者你的系统有scoop
包管理,可以使用:
scoop install ninja cmake
二、开始编译
2.1 检查环境
打开一个cmd
窗口,请确保在这个窗口中可以执行,python
、ninja
、g++
、cmake
指令。
2.2 编译 LLVM(llvm和clang模块就行)
先编译llvm
再编译clang
。
新建两个文件夹(叫什么和在哪里都随便,别含中文路径和空格路径),然后打开cmake-gui
,用命令行也可以,但是用gui
方便查看库的一些定义啥的,也方便修改这些定义。
上下两行这样填写,第一行是源码目录,第二行是生成的工程位置,就是上面我们自己创建的:
然后点击界面左下侧的Configure
按钮,首次可能会报错,说没有填写CMAKE_BUILD_TYPE
,手动填上Release
,然后在CMAKE_INSTALL_PREFIX
一栏填写稍后编译完成后的安装目录,推荐自己创建一个,我这里是:
填写好以后,点击Generate
按钮,应该就可以成功生成工程项目了。打开一个cmd
窗口,进入到你的工程中。
后面的-j8
不推荐填太大,我当时直接使用cmake --build . --parallel
,直接32G
内存干爆了。
编译完成后使用mingw32-make.exe install
安装到上面配置的安装目录中。
然后编译clang
,方法与上面一样,配置CMAKE_BUILD_TYPE
为Release
,CMAKE_INSTALL_PREFIX
一栏填写稍后编译完成后的安装目录,我填写的是:D:\llvm-18.1.5\clang-build
,其实两个工程的安装目录填一样(我第一次搞怕不行,分开两个)就行。
与llvm
稍有不同的是,除了配置上面两个变量还需要填写一个LLVM_BINARY_DIR
,就是你上面安装的llvm
目录,我这里是:D:\llvm-18.1.5\llvm-build
,
然后这里添加一个BOOL
类型的Entry
,Name
填:LLVM_INCLUDE_TESTS
,不勾选,确定,然后Generate
就行。与上面llvm
一样,
打开一个cmd
窗口,进入到clang的工程目录
,我这里是:D:\llvm-18.1.5\llvm-project-llvmorg-18.1.5\mybuildclang
,然后执行,mingw32-make.exe -j8
,完成后mingw32-make.exe install
。最后将两个安装目录的内容拷贝到一起,并将目录改为libclang
,如下图:
2.3 编译 qt6
解压源码,cmd
进入到源码中:
配置,下面是cmd
配置,我截图用的powershell
(记录该文章才截的图,懒得换图了),powershell
用的是$env
的形式,用powershell
的自己研究吧。
set PATH=%PATH%;D:\mingw-qt6\libclang\bin
set LLVM_INSTALL_DIR=D:\mingw-qt6\libclang
然后执行:
configure.bat -platform win32-g++ -debug-and-release -confirm-license -opensource -prefix D:\mingw-qt6\qt6-build -skip qtwebengine -nomake tests
其中D:\mingw-qt6\qt6-build
是最后编译完成后的安装目录。
执行:
cmake --build . --parallel
构建完成后安装:
ninja install
构建文档,貌似会遇到复制报错的Error
,手动把报错目标位置的目录删除再重新执行就行了:
ninja docs
ninja docs
命令执行完成后,生成的文档在源码的doc
目录下:
最后将doc
文件夹复制到安装目录下,一个完整的不含qtwebengine
模块(貌似mingw64
不支持?)的qt6
就完成了。