我正在运行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
,我发现CC
和CXX
未使用我指定的编译器。
以下是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
没有使用我在我使用的工具包中指定的编译器?
答案 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
但无论如何都需要编译器。