You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qt构建前执行Shell命令?Oracle Linux 6编译适配

解决Qt在Oracle Linux 6下调用devtoolset-3编译C++11的问题

我来帮你搞定这个Qt配置的问题,让它自动加载devtoolset-3环境,从而支持C++11编译。这里有几种可行的方案,你可以根据自己的使用场景来选:

1. 给Qt Creator配置自定义编译器脚本

这种方法适合用Qt Creator开发的场景,能让指定的构建套件自动加载devtoolset-3:

  • 打开Qt Creator,依次进入工具 > 选项 > 构建和运行 > 编译器
  • 点击「添加」按钮,选择GCC类型的编译器
  • 在「命令」输入框里,不要直接填g++,而是填一个自定义脚本的路径,比如/usr/local/bin/devtoolset-g++
  • 接下来创建这个脚本文件,内容如下:
    #!/bin/bash
    source scl_source enable devtoolset-3
    exec g++ "$@"
    
  • 给脚本添加执行权限:
    chmod +x /usr/local/bin/devtoolset-g++
    
  • 最后到「构建套件(Kit)」选项卡,把对应套件的C编译器设置为刚才创建的这个自定义脚本,这样每次编译时都会先加载devtoolset-3环境再调用g

2. 在单个项目的.pro文件中配置

如果只想让某个特定项目使用devtoolset-3,直接修改项目的.pro文件就行:
在文件末尾添加以下内容:

QMAKE_CXX = /usr/bin/scl enable devtoolset-3 -- g++
QMAKE_CC = /usr/bin/scl enable devtoolset-3 -- gcc

这样qmake生成的Makefile里,会自动用scl enable devtoolset-3 -- g++作为编译命令,无需手动切换环境。

3. 全局设置环境变量(所有项目生效)

要是你希望所有Qt项目都默认使用这个环境,可以试试这两种方式:

  • 修改Qt Creator启动脚本:找到Qt Creator的启动脚本(通常是/usr/bin/qtcreator),在脚本开头添加一行:
    source scl_source enable devtoolset-3
    
  • 修改用户bash配置:在你的~/.bashrc或~/.bash_profile文件末尾添加:
    source scl_source enable devtoolset-3
    
    保存后重启终端,再打开Qt Creator,环境就已经自动加载好了。

验证配置是否生效

配置完成后,可以编译一段简单的C++11代码(比如使用auto关键字或lambda表达式),或者查看Qt Creator的编译输出,确认编译器命令已经带上了devtoolset-3的环境加载逻辑。

内容的提问来源于stack exchange,提问作者YeP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:27:51