Qt Creator,项目工具包编译器被忽略

时间:2018-01-10 02:20:31

标签: c++ qt makefile openmp

我正在运行macOS High Sierra(10.13.2)和Qt 5.10.0。我想在我的应用程序中使用OpenMP。

我已将以下标志添加到我的.pro文件

QMAKE_CXXFLAGS += -fopenmp
QMAKE_LFLAGS += -fopenmp
LIBS += -fopenmp

macOS上的默认编译器不包含OpenMP。我通过支持OpenMP的自制软件安装了gcc

在Build& amp;运行 - > Qt Creator的编译器选项卡,我添加了自制g++gcc编译器(/usr/local/Cellar/gcc/7.2.0/bin/{gcc-7,g++-7})。然后我选择了我正在使用的工具包,并将编译器更改为我在编译器选项卡下添加的自制安装的编译器。

如果在设置此工具包并重建项目后检查Qt Creator生成的Makefile,我发现CCCXX未使用我指定的编译器。 以下是Makefile中的值:

CC            = /Library/Developer/CommandLineTools/usr/bin/clang
CXX           = /Library/Developer/CommandLineTools/usr/bin/clang++

这些应该是/usr/local/Cellar/gcc/7.2.0/bin/g++-7/usr/local/Cellar/gcc/7.2.0/bin/gcc-7

我现在得到的编译器输出是:

  

18:14:48:开始:“/ usr / bin / make”

     

/usr/local/Cellar/qt/5.10.0/bin/qmake -o Makefile ../Practice/Practice.pro -spec macx -g ++ CONFIG + = debug CONFIG + = x86_64 CONFIG + = qml_debug

     

/ Library / Developer / CommandLineTools / usr / bin / g ++ -c -pipe -fopenmp -g -std = gnu ++ 11 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.13.sdk- mmacosx-version-min = 10.10 -Wall -W -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I ../ Practice -I。 -I / usr / local / Cellar / qt / 5.10.0 / lib / QtQuick.framework / Headers -I / usr / local / Cellar / qt / 5.10.0 / lib / QtGui.framework / Headers -I / usr / local /Cellar/qt/5.10.0/lib/QtQml.framework/Headers -I / usr / local / Cellar / qt / 5.10.0 / lib / QtNetwork.framework / Headers -I / usr / local / Cellar / qt / 5.10 .0 / lib / QtCore.framework / Headers -I。 -I / Library / Developer / CommandLineTools / SDKs / MacOSX10.13.sdk / System / Library / Frameworks / OpenGL.framework / Headers -I / Library / Developer / CommandLineTools / SDKs / MacOSX10.13.sdk / System / Library / Frameworks /AGL.framework/Headers -I / usr / local / Cellar / qt / 5.10.0 / mkspecs / macx-g ++ -F / usr / local / Cellar / qt / 5.10.0 / lib -o main.o ../实践/ main.cpp中

     

clang:错误:不支持选项'-fopenmp'

     

make:*** [main.o]错误1

     

18:14:49:进程“/ usr / bin / make”退出代码2.

     

构建/部署项目时出错(套件:桌面)   执行步骤“Make”

为什么Qt Creator生成的Makefile没有使用我在我使用的工具包中指定的编译器?

1 个答案:

答案 0 :(得分:3)

因为您使用的mkspec macx-g++将覆盖CC和CXX设置。作为临时解决方法,请尝试直接在pro文件中设置它们:

QMAKE_CC = /usr/local/Cellar/gcc/7.2.0/bin/gcc-7
QMAKE_CXX = /usr/local/Cellar/gcc/7.2.0/bin/g++-7

您可能想要为您的工具包编辑mkspec(或制作一个新的)并在那里设置这些变量。

要查找mkspec文件(qmake.conf):

INSTALLDIR=`qmake -query QT_INSTALL_CONFIGURATION`
MKSPECNAME=`qmake -query QMAKE_SPEC`
cd $INSTALLDIR/mkspecs/$MKSPECNAME

至于为什么必须设置两次编译器:Qt Creator应该是一个通用的c ++ IDE,因此能够管理非Qt项目,它们不使用qmake但无论如何都需要编译器。