【问题标题】:Qt Creator, Compiler in kit for project is being ignoredQt Creator,项目套件中的编译器被忽略
【发布时间】:2018-06-19 03:33:15
【问题描述】:

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

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

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

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

在 Qt Creator 的 Build & Run -> Compilers 选项卡下,我添加了 homebrew 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 没有使用我在我正在使用的工具包中指定的编译器?

【问题讨论】:

  • 你能在不包含openmp的情况下让它编译吗?我也有类似的问题。
  • 是的,它会在不包含 OpenMP 的情况下编译,但它仍然使用错误的编译器。

标签: c++ qt makefile openmp


【解决方案1】:

因为您使用的 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,但无论如何都需要编译器。

【讨论】:

  • 谢谢。在我添加QMAKE_LINK = /usr/local/Cellar/gcc/7.2.0/bin/g++-7 之后,这行得通。
猜你喜欢
  • 2023-02-02
  • 1970-01-01
  • 2013-01-19
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多