安装 wxwidgets 2 时遇到问题
Trouble with installing wxwidgets 2
如果你看到我的 并且如果你也再次遇到问题,你必须查看这个问题并阅读答案
让我们开始吧,在删除无用的 gcc 路径后,我在控制台中得到了这个:
from ../../src/common/any.cpp:18:
C:/TDM-GCC-32/lib/gcc/mingw32/5.1.0/include/c++/bits/c++0x_warning.h:32:2: error
: #error This file requires compiler and library support for the ISO C++ 2011 st
andard. This support is currently experimental, and must be enabled with the -st
d=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
In file included from ..\..\include/wx/string.h:46:0,
from ..\..\include/wx/any.h:19,
from ../../src/common/any.cpp:18:
..\..\include/wx/strvararg.h:350:18: error: 'is_enum' in namespace 'std' does no
t name a template type
typedef std::is_enum<T> is_enum;
^
..\..\include/wx/strvararg.h:354:54: error: 'is_enum' was not declared in this s
cope
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
..\..\include/wx/strvararg.h:354:68: error: template argument 1 is invalid
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
makefile.gcc:11712: recipe for target 'gcc_mswud\baselib_any.o' failed
mingw32-make: *** [gcc_mswud\baselib_any.o] Error 1
C:\wxWidgets-3.0.2\build\msw>
这是命令
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc clean
>>>mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0<<<
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
不幸的是,wxWidgets 3.0.2 在 g++ 5.1 之前发布(甚至在 g++ 4.9 之前,或者可能接近于 g++ 4.9),所以它在使用时不能在 C++98 模式下开箱即用它。此问题已得到修复,但未在正式版本中修复,因此您有 2 个选择:
- 将 this fix 应用于您的来源。如果您不确定如何操作,最好的办法是从 git.
获取 WX_3_0_BRANCH
的最新资源
- 通过将
CXXFLAGS=-std=gnu++11
附加到您的 make 命令行以 C++11 模式构建。如果您这样做,请记住在以后使用 wxWidgets 构建应用程序时使用相同的标志!
如果你看到我的
from ../../src/common/any.cpp:18:
C:/TDM-GCC-32/lib/gcc/mingw32/5.1.0/include/c++/bits/c++0x_warning.h:32:2: error
: #error This file requires compiler and library support for the ISO C++ 2011 st
andard. This support is currently experimental, and must be enabled with the -st
d=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
In file included from ..\..\include/wx/string.h:46:0,
from ..\..\include/wx/any.h:19,
from ../../src/common/any.cpp:18:
..\..\include/wx/strvararg.h:350:18: error: 'is_enum' in namespace 'std' does no
t name a template type
typedef std::is_enum<T> is_enum;
^
..\..\include/wx/strvararg.h:354:54: error: 'is_enum' was not declared in this s
cope
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
..\..\include/wx/strvararg.h:354:68: error: template argument 1 is invalid
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
makefile.gcc:11712: recipe for target 'gcc_mswud\baselib_any.o' failed
mingw32-make: *** [gcc_mswud\baselib_any.o] Error 1
C:\wxWidgets-3.0.2\build\msw>
这是命令
cd %WXWIN%\build\msw
mingw32-make -f makefile.gcc clean
>>>mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0<<<
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0
不幸的是,wxWidgets 3.0.2 在 g++ 5.1 之前发布(甚至在 g++ 4.9 之前,或者可能接近于 g++ 4.9),所以它在使用时不能在 C++98 模式下开箱即用它。此问题已得到修复,但未在正式版本中修复,因此您有 2 个选择:
- 将 this fix 应用于您的来源。如果您不确定如何操作,最好的办法是从 git. 获取
- 通过将
CXXFLAGS=-std=gnu++11
附加到您的 make 命令行以 C++11 模式构建。如果您这样做,请记住在以后使用 wxWidgets 构建应用程序时使用相同的标志!
WX_3_0_BRANCH
的最新资源