建立Qt - NMAKE:致命错误U1077:'cd':返回代码'0x2' [英] Building Qt - NMAKE : fatal error U1077: 'cd' : return code '0x2'

查看:8227
本文介绍了建立Qt - NMAKE:致命错误U1077:'cd':返回代码'0x2'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用静态链接使用msvc2015构建Qt5.5,但我有以下错误(实际上有很多,但我只列出了一些,他们都是相同的) :

I'm trying to build Qt5.5 with static linking using msvc2015 but I'm having the following errors (actually there's a whole lot of them but I'm only listing a few, they're all quite the same):

K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(50): error C2873: 'uint_fast64_t': symbol cannot be used in a using-declaration
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(52): error C2039: 'intmax_t': is not a member of '`global namespace''
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(52): error C2873: 'intmax_t': symbol cannot be used in a using-declaration
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(53): error C2039: 'uintmax_t': is not a member of '`global namespace''
K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\INCLUDE\cstdint(53): error C2873: 'uintmax_t': symbol cannot be used in a using-declaration
NMAKE : fatal error U1077: '"K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"K:\Archivos de programa\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

要配置编译,我使用以下命令:

To configure the compilation, I'm using the following commmand:

configure.bat -confirm-license -static -release -prefix "K:\Qt\msvc2015_static" -platform win32-msvc2015 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -opensource -make libs -nomake tools -nomake examples -nomake tests

任何人都知道发生了什么事?

Anyone has a clue of what is going on?

推荐答案

这个确切错误已在这个线程在Qt论坛。它链接到非官方补丁,可以找到这里

This exact error has been discussed in this thread in the Qt forum. It links to an unofficial patch which can be found here.

为了将来参考,补丁的内容如下:

For future reference, the contents of the patch are listed below:

diff --git a/src/3rdparty/clucene/src/CLucene/StdHeader.h b/src/3rdparty/clucene/src/CLucene/StdHeader.h
index 224d400..50adbf6 100644
--- a/src/3rdparty/clucene/src/CLucene/StdHeader.h
+++ b/src/3rdparty/clucene/src/CLucene/StdHeader.h
@@ -123,6 +123,9 @@ extern int _lucene_counter_break; //can set a watch on this
 #endif

 #if !defined(LUCENE_DISABLE_HASHING) && defined(_CL_HAVE_HASH_MAP) && defined(_CL_HAVE_HASH_SET)
+   #if (defined(_MSC_VER) && (_MSC_VER >= 1900))
+   #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
+   #endif
    //hashing is all or nothing!
    #include <hash_map>
    #include <hash_set>
diff --git a/src/3rdparty/clucene/src/CLucene/util/VoidMap.h b/src/3rdparty/clucene/src/CLucene/util/VoidMap.h
index 1153a01..b37465a 100644
--- a/src/3rdparty/clucene/src/CLucene/util/VoidMap.h
+++ b/src/3rdparty/clucene/src/CLucene/util/VoidMap.h
@@ -217,17 +217,28 @@ public:

 //A collection that contains no duplicates
 //does not guarantee that the order will remain constant over time
+// MSVC2015: https://codereview.qt-project.org/#/c/110682/3//ALL,unified
 template<typename _kt, typename _vt, 
    typename _Compare,
    typename _KeyDeletor=CL_NS(util)::Deletor::Dummy,
    typename _ValueDeletor=CL_NS(util)::Deletor::Dummy>
 class CLSet:public __CLMap<_kt,_vt,
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900))
+   CL_NS_STD(map)<_kt,_vt>,
+#else
    CL_NS_STD(map)<_kt,_vt, _Compare>,
+#endif
    _KeyDeletor,_ValueDeletor>
 {
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900))
+   typedef typename CL_NS_STD(map)<_kt,_vt> _base;
+   typedef __CLMap<_kt, _vt, CL_NS_STD(map)<_kt,_vt>,
+       _KeyDeletor,_ValueDeletor> _this;
+#else
    typedef typename CL_NS_STD(map)<_kt,_vt,_Compare> _base;
    typedef __CLMap<_kt, _vt, CL_NS_STD(map)<_kt,_vt, _Compare>,
        _KeyDeletor,_ValueDeletor> _this;
+#endif
 public:
    CLSet ( const bool deleteKey=false, const bool deleteValue=false )
    {
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.h b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.h
index 8e1fdbe..79511ef 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.h
@@ -172,7 +172,10 @@ namespace JSC {
         void operator delete[](void*);

         void* operator new(size_t, void*);
+// FIXME: strange magic
+#if !(defined(_MSC_VER) && (_MSC_VER >= 1900))
         void operator delete(void*, size_t);
+#endif
     };

     class ArgList {
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/StringExtras.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/StringExtras.h
index b1ec09f..11670e2 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/StringExtras.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/StringExtras.h
@@ -36,6 +36,7 @@
 #if COMPILER(MSVC)
 // FIXME: why a COMPILER check instead of OS? also, these should be HAVE checks

+#if (_MSC_VER < 1900)
 inline int snprintf(char* buffer, size_t count, const char* format, ...) 
 {
     int result;
@@ -45,6 +46,7 @@ inline int snprintf(char* buffer, size_t count, const char* format, ...)
     va_end(args);
     return result;
 }
+#endif

 #if COMPILER(MSVC7) || OS(WINCE)

diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h
index 7ba487f..790c6a0 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h
@@ -170,8 +170,16 @@ namespace WTF {

     // GCC's libstdc++ 20070724 and later supports C++ TR1 type_traits in the std namespace.
     // VC10 (VS2010) and later support C++ TR1 type_traits in the std::tr1 namespace.
+    // VC14 (VS2015) and later support C++11 type_traits in the std namespace, but old TR1 names
+    // have been removed. See https://msdn.microsoft.com/en-us/library/vstudio/bb531344(v=vs.140).aspx
+    // for details.
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900))
+    template<typename T> struct HasTrivialConstructor : public std::is_trivially_default_constructible<T> { };
+    template<typename T> struct HasTrivialDestructor : public std::is_trivially_destructible<T> { };
+#else
     template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
     template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
+#endif

 #else

diff --git a/src/3rdparty/javascriptcore/WebKit.pri b/src/3rdparty/javascriptcore/WebKit.pri
index 9aaaa99..487aad6 100644
--- a/src/3rdparty/javascriptcore/WebKit.pri
+++ b/src/3rdparty/javascriptcore/WebKit.pri
@@ -22,7 +22,7 @@ isEmpty(OUTPUT_DIR) {

 DEFINES += BUILDING_QT__=1
 building-libs {
-    win32-msvc*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
+    win32-msvc200*|win32-msvc2010*|win32-msvc2012*|win32-msvc2013*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
 } else {
     CONFIG(QTDIR_build) {
         QT += webkit
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/ArgList.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/ArgList.h
index bb2d2842..627b015 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/ArgList.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/ArgList.h
@@ -174,7 +174,10 @@ namespace JSC {
         void operator delete[](void*);

         void* operator new(size_t, void*);
+// FIXME: strange magic
+#if !(defined(_MSC_VER) && (_MSC_VER >= 1900))
         void operator delete(void*, size_t);
+#endif
     };

     class ArgList {
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StringExtras.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StringExtras.h
index 371e33b..37e0858 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StringExtras.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/StringExtras.h
@@ -37,6 +37,7 @@
 #if COMPILER(MSVC)
 // FIXME: why a COMPILER check instead of OS? also, these should be HAVE checks

+#if (_MSC_VER < 1900)
 inline int snprintf(char* buffer, size_t count, const char* format, ...) 
 {
     int result;
@@ -52,6 +53,7 @@ inline int snprintf(char* buffer, size_t count, const char* format, ...)

     return result;
 }
+#endif

 inline double wtf_vsnprintf(char* buffer, size_t count, const char* format, va_list args)
 {
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/TypeTraits.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/TypeTraits.h
index 44103cd..7b09980 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/TypeTraits.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/TypeTraits.h
@@ -183,8 +183,16 @@ namespace WTF {

     // GCC's libstdc++ 20070724 and later supports C++ TR1 type_traits in the std namespace.
     // VC10 (VS2010) and later support C++ TR1 type_traits in the std::tr1 namespace.
+    // VC14 (VS2015) and later support C++11 type_traits in the std namespace, but old TR1 names
+    // have been removed. See https://msdn.microsoft.com/en-us/library/vstudio/bb531344(v=vs.140).aspx
+    // for details.
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900))
+    template<typename T> struct HasTrivialConstructor : public std::is_trivially_default_constructible<T> { };
+    template<typename T> struct HasTrivialDestructor : public std::is_trivially_destructible<T> { };
+#else
     template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
     template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
+#endif

 #else

diff --git a/src/3rdparty/webkit/Source/WebKit.pri b/src/3rdparty/webkit/Source/WebKit.pri
index 01f88a4..b607444 100644
--- a/src/3rdparty/webkit/Source/WebKit.pri
+++ b/src/3rdparty/webkit/Source/WebKit.pri
@@ -38,7 +38,7 @@ DEPENDPATH += $$OUT_PWD

 DEFINES += BUILDING_QT__=1
 building-libs {
-    win32-msvc*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
+    win32-msvc200*|win32-msvc2010*|win32-msvc2012*|win32-msvc2013*|win32-icc: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
 } else {
     CONFIG(QTDIR_build) {
         QT += webkit

这篇关于建立Qt - NMAKE:致命错误U1077:'cd':返回代码'0x2'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆