如何在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文件末尾添加:
保存后重启终端,再打开Qt Creator,环境就已经自动加载好了。source scl_source enable devtoolset-3
验证配置是否生效
配置完成后,可以编译一段简单的C++11代码(比如使用auto关键字或lambda表达式),或者查看Qt Creator的编译输出,确认编译器命令已经带上了devtoolset-3的环境加载逻辑。
内容的提问来源于stack exchange,提问作者YeP
相关产品推荐
相关产品推荐

