我正在尝试第 n 次从源代码编译 qt,这次使用选项 configure -release -platform-win32 但我遇到了错误:
任何人都知道如何解决它?
谢谢。
我正在尝试第 n 次从源代码编译 qt,这次使用选项 configure -release -platform-win32 但我遇到了错误:
任何人都知道如何解决它?
谢谢。
当使用 MinGW 编译器(可能是任何 gcc 编译器)编译 Qt 时,您可能会遇到此问题,该编译器默认编译启用 C++11 标准的 C++ 程序。
第 3 方库 JavaScriptCore 尝试定义一些“规范化”has_trivial_constructor
和相关模板的包装器,但显然它尚未更新以处理 GCC 的更新以合并完整的 C++11 标准。
mkspecs\win32-g++\qmake.conf
修复方法是使用默认情况下不启用 C++11 功能的 MinGW 编译器,或者通过编辑将-std=gnu++98
选项添加到 C++ 构建来关闭它们:
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98
# ^^^^^^^^^^^^
如果您使用的是 gcc 4.7,则您可以访问大部分 C++11(如果您使用)进行编译,-std=c++11
或者您可以在此处查看命名空间-std=gnu++11
下支持的功能。子命名空间用于现在已成为标准的草案。std
tr1
您可以用std::tr1::has_trivial_constructor
C++11 标准化的std::is_trivially_constructible
. 请参阅http://www.cplusplus.com/reference/type_traits/is_trivially_constructible。
尝试(包含在宏中#include <type_traits>
)添加
#include <tr1/memory>
TypeTraits.h
我能够解决这个问题只是把
QMAKE_CXXFLAGS += -std=gnu++98
在 src/script/script.pro 中。我希望编译一些编译单元 c++-11 和其他 gnu++98 不会造成任何问题。