Windows环境下使用Intel C++编译器(ICC)编译Qt项目的问题咨询
Windows平台用Intel C++编译器编译Qt项目操作方案
核心疑问解答
- make工具本身与编译器无绑定关系,仅负责按照Makefile中定义的规则执行对应命令,只要Makefile内正确指定编译器路径、编译链接参数,即可调用任意兼容的C++编译器完成构建。
- 不需要手动编写通用Makefile,可直接用qmake生成基础构建规则,仅替换编译器相关配置即可实现ICC编译,无需折腾Qt Creator的Kit配置。
具体操作步骤
前置准备
确保已完成Intel oneAPI C++编译器(原ICC)的安装,且在当前终端执行过setvars.bat加载编译器环境变量,终端输入icx(新版编译器)或icl(经典ICC)可正常调用。
生成基础Makefile
不需要在Qt Creator中配置ICC构建套件,直接打开你当前使用的MinGW版本Qt的命令行终端,进入项目目录,执行qmake生成基础Makefile:
qmake your_project.pro
如果需要更简便的操作,可直接在qmake执行时传入编译器参数,无需后续手动修改Makefile:
qmake your_project.pro "CC=icx" "CXX=icx" "LINK=icx"
(可选)手动修改Makefile编译器配置
如果没有在qmake阶段传入参数,可打开生成的Makefile,找到以下变量定义,替换为ICC对应配置即可:
- 替换
CC变量为ICC路径:CC = icx(经典ICC填icl) - 替换
CXX变量为ICC路径:CXX = icx(经典ICC填icl) - 替换
LINK变量为ICC链接器:LINK = icx(经典ICC填xilink) - 删除
CFLAGS、CXXFLAGS、LFLAGS中所有MinGW专属的编译、链接参数,替换为ICC支持的对应参数即可。
执行编译
直接运行make工具完成构建,可使用MinGW带的mingw32-make,也可使用nmake,make工具本身不影响编译器调用:
mingw32-make -j8
注意事项
- Qt的moc、uic、rcc等代码生成工具与编译器无关,可直接使用现有MinGW版本Qt自带的工具,生成的C++代码ICC可正常编译。
- 编译时避免引入MinGW的标准库路径,ICC默认使用自身或MSVC的标准库,混用会出现链接错误。
- 如遇到Qt头文件兼容性报错,可通过添加ICC兼容编译参数解决,Qt官方头文件对主流编译器的兼容性支持较好,极少出现无法解决的语法报错。
内容的提问来源于stack exchange,提问作者Roman Zuev
相关产品推荐
相关产品推荐

