2015-10-14 12 views
5

Próbuję zbudować Qt5.5 za pomocą statycznego linkowania za pomocą msvc2015, ale mam następujące błędy (w rzeczywistości jest dużo je, ale mam tylko wymieniając tylko kilka, wszystkie one są zupełnie takie same):Building Qt - NMAKE: błąd krytyczny U1077: 'cd': kod powrotu '0x2'

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. 

Aby skonfigurować kompilację, używam następujące 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 

ktoś ma pojęcia o co chodzi?

Odpowiedz

0

Dzieje się tak, ponieważ prawdopodobnie masz bardzo długą ścieżkę do lokalizacji kodów źródłowych. Dlatego spróbuj skrócić ścieżkę lokalizacji kodów. Na przykład umieść je w krótkiej nazwie folderu w katalogu głównym dysku.

zobacz także: https://stackoverflow.com/a/14862127/2385309

+0

Nie, ścieżka kodu źródłowego to K: \ Qt \ Qt5. Ponadto, nie jest to ten sam problem, co wątek, do którego dołączasz, nie mam "C: \ Program" nie jest rozpoznawany jako wewnętrzne lub zewnętrzne polecenie, program operacyjny lub plik wsadowy. " błąd – eldritx

+0

Czy można skopiować wklej zmienne środowiskowe PATH i VISUALDIR. Również masz już inne błędy w swoim kodzie, 'symbol nie może być użyty w deklaracji użycia' również spróbuj naprawić te –

+0

Czy też używasz niestandardowej instrukcji -arch w komendzie kompilacji? –

2

Ten dokładny błąd został omówiony w this thread na forum Qt. Łączy się z nieoficjalną łatą, którą można znaleźć pod adresem here.

Przypominamy, zawartość plastra są wymienione poniżej:

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 
+0

Łatka jest niezakończona (brakuje co najmniej zamykających się klocków), czy nadal masz pełną wersję? –

+0

@ LaurentCrivello Wziąłem łatkę z linku, jak podano w odpowiedzi. Te zmiany również zastosowałem ręcznie, ponieważ chciałem je zobaczyć indywidualnie i to działało dobrze. – Bowdzone

0

@Bowdzone dzięki. ta łatka działała jak czar do budowania qt4.8.7

Musiałem również dołączyć "$ (QMAKESPEC)" == "win32-msvc2015" po opcji msvc2013 w C: \ repo \ qt \ 4.8.7 \ qmake \ Makefile.win32 (linia 27), aby polecenie configure działało - jak wspomniano w building qt for msvc2015 guide lines

BTW Musiałem zbudować qt4.8.7 jako zależność dla pakietu 3dslicer OSS.

p.s Nie mam wystarczającej liczby punktów do dodania komentarza. To jest walidacja, że ​​łatka działa dla mnie.