【问题标题】:Qscintilla make error : "Qt requires C++11 support"Qscintilla 出错:“Qt 需要 C++11 支持”
【发布时间】:2017-01-16 05:47:00
【问题描述】:

我正在尝试在 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版本分钟= 10.8 -fvisibility =隐藏-fvisibility-内联隐藏-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 支持”
# 错误“Qt 需要 C++11 支持”
^
/Applications/Utilities/Qt/5.7/clang_64/lib/QtCore.framework/Headers/qbasicatomic.h:90:13:错误:
未知类型名称“QAtomicOps”
typedef QAtomicOps 操作;

在关于该主题的其他问题之后,我添加了

\# 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。

【问题讨论】:

  • 你用什么编译器,什么版本的?
  • 根据上面的日志,g++被调用了。 g++ --version 提供以下内容: 配置为: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM 版本7.3.0 (clang-703.0.31) 目标:x86_64-apple-darwin15.6.0 线程模型:posix
  • 我在这里看不到 gcc 版本号。如果'4.2.1'是你gcc没有c++11的版本号。
  • 编译器是clang,在macs上替代gcc (see this thread)

标签: macos qt c++11 qscintilla


【解决方案1】:

感谢上面关于所用编译器的评论,我在this thread 上发现,为了在 Mac 上使用 c++11 和 clang/llvm,还需要使用库 -stdlib=libc++ 而不是旧的 libstdc++。

问题就这样解决了

QMAKE_LFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -stdlib=libc++

到 .pro 文件。

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多