使用qtcreater和mingw和cmake编译cpp程序

⌚Time: 2025-03-25 03:03:00

👨‍💻Author: Jack Ge

到官网等网站直接下载qtcreater。qtcreater4.0.0只有75MB,而qt程序需要600MB。如果不需要开发qt程序就直接下载用qtcreater就行了。我就是这样。

但是直接用qtcreater需要本地安装有mingw编译器和cmake构建工具。这两个工具的安装过程也不写了。前提就是这两个工具在系统上安装好了。

直接下载qtcreater安装包安装。打开后就点击菜单栏,工具,选项,构建和运行。进行编译配置。

切换到cmake选项卡,直接添加cmake执行文件的路径

之后切换到构建套件(Kit)选项卡,编辑配置,如果自动检测没有的话,在手动配置那里会有一个默认的桌面配置,如果mingw安装好的话会自动填写了mingw编译器的位置。

对于qt版本这个选项就是无,因为没有安装qt,但是用到cmake去构建makefile,所以需要添加cmake tool,选择之前配置的cmake名称

按理说到了这里,所有的配置都完成了。应该能够正常编译项目了。但是我新建一个cpp项目后编译发现cmake过程报错。cmake找不到c/cpp编译器。之后我再检查构建配置,发现桌面配置有个警告:提醒cmake的编译器路径和kit的编译器路径不一致。这也是cmake找不到编译器的原因

下面有个cmake configuration,点击右侧的change,会有一个小窗口,可以配置。一开始设置的是

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}

大概意思应该是他把qtcreater环境变量里面的Compiler:Executable:Cxx当作CMAKE_CXX_COMPILER的值了。Compiler:Executable:C当作CMAKE_C_COMPILER的值了。

查看qtcreater环境变量的值会发现,没有Compiler:Executable:Cxx之类的变量,只有一个Compiler:Executable,所以自然就不会有正确的路径

所以我直接手动填写路径了,直接改成自己的本地mingw编译器的路径。注意路径不能是反斜杠,要是正斜杠。因为我尝试反斜杠又会导致cmake过程出错。cmake把反斜杠当成转义字符。

CMAKE_CXX_COMPILER:STRING=D:/BuildChanTools/i686-5.2.0-release-posix-sjlj-rt_v4-rev1/mingw32/bin/g++.exe
CMAKE_C_COMPILER:STRING=D:/BuildChanTools/i686-5.2.0-release-posix-sjlj-rt_v4-rev1/mingw32/bin/gcc.exe

配置完成后再次进行编译。发现又报错了。提示

TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension(0x2d1f1e0) is not a function

在网上查找原因,是因为项目生成路径创建失败。点击项目,构建和运行那里,会发现构建目录那里出现报错提示,解决办法就是手动点击右侧浏览,选择一个正常目录

之后选择目录完成后,就会可以了。编译运行成功

另外,对于附加库和头文件,需要在项目的cmakelist.txt文件里面添加。

注意

在创建项目的时候,因为使用的是cmake构建系统,所以要选择cmake而不是默认的qmake