Qscintilla犯错:" Qt需要C ++ 11支持"

时间:2016-09-08 10:24:21

标签: macos qt c++11 qscintilla

我正在尝试在mac(OS X 10.11.6)上编译Qscintilla 2.9.3(获得here),但make步骤失败并出现以下错误:

  

/Applications/Xcode.app/Contents/Developer/usr/bin/g++ -c -pipe -O2 -std = gnu ++ 11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform /Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min = 10.8 -fvisibility = hidden -fvisibility-inlines-hidden -w -fPIC -DQSCINTILLA_MAKE_DLL -DSCINTILLA_QT -DSCI_LEXER -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_MACEXTRAS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -一世。 -一世。 -I ../ include -I ../ lexlib -I ../ src -I / Applications / Utilities / Qt / 5.7 / clang_64 / lib / QtPrintSupport.framework / Headers -I / Applications / Utilities / Qt / 5.7 / clang_64 /lib/QtWidgets.framework/Headers -I / Applications / Utilities / Qt / 5.7 / clang_64 / lib / QtMacExtras.framework / Headers -I / Applications / Utilities / Qt / 5.7 / clang_64 / lib / QtGui.framework / Headers -I /Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers -I。 -I / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.11.sdk / System / Library / Frameworks / OpenGL.framework / Headers -I / Applications / Xcode.app / Contents /Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I / Applications / Utilities / Qt / 5.7 / clang_64 / mkspecs / macx-g ++ -F /Applications/Utilities/Qt/5.7/clang_64/lib -o qsciscintilla.o qsciscintilla.cpp
  在qsciscintilla.cpp中包含的文件中:23:
  在./Qsci/qsciscintilla.h:29中包含的文件中:
  在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/QByteArray:1中包含的文件中:   在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qbytearray.h:44中包含的文件中:   在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qrefcount.h:43中包含的文件中:   在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qatomic.h:41中包含的文件中:   在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qglobal.h:1145中包含的文件中:
  在/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qatomic.h:46中包含的文件中:   /Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qbasicatomic.h:61:4:错误:
       " Qt需要C ++ 11支持"
  #error" Qt需要C ++ 11支持"
      ^
  /Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qbasicatomic.h:90:13:错误:
       未知类型名称' QAtomicOps'
     typedef QAtomicOps Ops;

关于这个问题的其他问题,我已经添加了

\# With C++11 support  
greaterThan(QT_MAJOR_VERSION, 4){      
CONFIG += c++11  
} else {  
QMAKE_CXXFLAGS += -std=c++0x  
}  

在qscintilla.pro文件中,无济于事。

thread似乎也出现了类似的问题。它是通过在依赖项中抑制-ansi标志来解决的,这会阻止使用c ++ 11。但是我在上面的日志中没有看到这样的标志。

您对可能导致该问题的原因有所了解吗?

我有QMake 3.0版和Qt 5.7。

1 个答案:

答案 0 :(得分:4)

感谢上面关于所用编译器的评论,我在this thread上发现为了在Mac上使用带有clang / llvm的c ++ 11,有必要使用库-stdlib = libc ++代替旧的libstdc ++。

通过添加

解决了这个问题
QMAKE_LFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -stdlib=libc++

到.pro文件。