Compiling Qt with seqan on Windows
-
Hi,
I m trying to compile a "hello world" application with Qt and seqan. Seqan is a C++14 header only library designed to perform DNA analysis. It supposed to work pretty well on Windows. And actually I can compile and run the code on Linux.
I didn't success to compile with both mingw32 5.3 and MSVC 64bits 2015.
My source code avaible there : https://github.com/dridk/seqanwinqtbellow are my compile output for both compier. With MSVC, it seems a UNICODE problem ...
So, I will be very glade if you success to compile my hello word !Using mingw 5.3 32 bits :
D:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'C:/Users/home/Documents/build-seqanwinqt-Desktop_Qt_5_9_1_MinGW_32bit-Debug' g++ -c -fno-keep-inline-dllexport -pipe -g -std=gnu++1y -Wextra -Wall -W -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\seqanwinqt -I. -ID:\Qt\5.9.1\mingw53_32\include -ID:\Qt\5.9.1\mingw53_32\include\QtGui -ID:\Qt\5.9.1\mingw53_32\include\QtANGLE -ID:\Qt\5.9.1\mingw53_32\include\QtCore -Idebug -ID:\Qt\5.9.1\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\seqanwinqt\main.cpp In file included from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/crtdefs.h:10:0, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/wchar.h:9, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/cwchar:44, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/postypes.h:40, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/iosfwd:40, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/ios:38, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/ostream:38, from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/iostream:39, from ..\seqanwinqt\main.cpp:1: ..\seqanwinqt/seqan/platform.h:290:17: error: declaration does not declare anything [-fpermissive] typedef int64_t __int64; // nolint ^ ..\seqanwinqt/seqan/platform.h:292:17: error: multiple types in one declaration typedef int32_t __int32; // nolint ^ ..\seqanwinqt/seqan/platform.h:292:17: error: declaration does not declare anything [-fpermissive] ..\seqanwinqt/seqan/platform.h:294:17: error: declaration does not declare anything [-fpermissive] typedef int16_t __int16; // nolint ^ ..\seqanwinqt/seqan/platform.h:296:16: error: multiple types in one declaration typedef int8_t __int8; // nolint ^ ..\seqanwinqt/seqan/platform.h:296:16: error: declaration does not declare anything [-fpermissive] In file included from ..\seqanwinqt/seqan/basic/basic_debug.h:52:0, from ..\seqanwinqt/seqan/basic.h:49, from ..\seqanwinqt\seqan/sequence.h:74, from ..\seqanwinqt\main.cpp:3: ..\seqanwinqt/seqan/basic/debug_test_system.h: In function 'const char* seqan::ClassTest::tempFileName()': ..\seqanwinqt/seqan/basic/debug_test_system.h:709:31: error: too many arguments to function 'int mkdir(const char*)' mkdir(fileNameBuffer, 0777); ^ In file included from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/unistd.h:10:0, from ..\seqanwinqt/seqan/basic/debug_test_system.h:165, from ..\seqanwinqt/seqan/basic/basic_debug.h:52, from ..\seqanwinqt/seqan/basic.h:49, from ..\seqanwinqt\seqan/sequence.h:74, from ..\seqanwinqt\main.cpp:3: D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/io.h:271:15: note: declared here int __cdecl mkdir (const char *) __MINGW_ATTRIB_DEPRECATED_MSVC2005; ^ ..\seqanwinqt\main.cpp: In function 'int main(int, char**)': ..\seqanwinqt\main.cpp:10:27: error: expected primary-expression before ';' token qDebug()<<COMPILER_GCC; ^ ..\seqanwinqt\main.cpp: At global scope: ..\seqanwinqt\main.cpp:5:14: warning: unused parameter 'argc' [-Wunused-parameter] int main(int argc, char *argv[]) ^ ..\seqanwinqt\main.cpp:5:31: warning: unused parameter 'argv' [-Wunused-parameter] int main(int argc, char *argv[]) ^ Makefile.Debug:297: recipe for target 'debug/main.o' failed mingw32-make[1]: *** [debug/main.o] Error 1 mingw32-make: *** [debug] Error 2 mingw32-make[1]: Leaving directory 'C:/Users/home/Documents/build-seqanwinqt-Desktop_Qt_5_9_1_MinGW_32bit-Debug' Makefile:36: recipe for target 'debug' failed 20:52:05: The process "D:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited with code 2. Error while building/deploying project seqanwinqt (kit: Desktop Qt 5.9.1 MinGW 32bit) When executing step "Make"
Using MSVC2015 64 bits
20:55:05: The process "D:\Qt\Tools\QtCreator\bin\jom.exe" exited normally. 20:55:05: Starting: "D:\Qt\Tools\QtCreator\bin\jom.exe" D:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I..\seqanwinqt -I. -ID:\Qt\5.9.1\msvc2015_64\include -ID:\Qt\5.9.1\msvc2015_64\include\QtGui -ID:\Qt\5.9.1\msvc2015_64\include\QtANGLE -ID:\Qt\5.9.1\msvc2015_64\include\QtCore -Irelease -ID:\Qt\5.9.1\msvc2015_64\mkspecs\win32-msvc -Forelease\ @C:\Users\home\AppData\Local\Temp\main.obj.5156.15.jom main.cpp ..\seqanwinqt\seqan/basic/debug_test_system.h(604): warning C4267: '='ÿ: conversion de 'size_t' en 'int', perte possible de donn‚es ..\seqanwinqt\seqan/basic/debug_test_system.h(677): error C2664: 'DWORD GetTempPathW(DWORD,LPWSTR)'ÿ: impossible de convertir l'argument 2 de 'char [1000]' en 'LPWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(677): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(688): error C2664: 'UINT GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR)'ÿ: impossible de convertir l'argument 1 de 'char [1000]' en 'LPCWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(688): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(696): error C2664: 'BOOL DeleteFileW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'char [1000]' en 'LPCWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(696): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(734): error C2589: '('ÿ: jeton non conforme … droite de '::' ..\seqanwinqt\seqan/basic/debug_test_system.h(734): error C2059: erreur de syntaxeÿ: '::' ..\seqanwinqt\seqan/basic/debug_test_system.h(735): error C2589: '('ÿ: jeton non conforme … droite de '::' ..\seqanwinqt\seqan/basic/debug_test_system.h(735): error C2059: erreur de syntaxeÿ: '::' ..\seqanwinqt\seqan/basic/debug_test_system.h(782): error C2664: 'HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(782): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(787): error C2678: '+' binaireÿ: aucun op‚rateur trouv‚ qui accepte un op‚rande de partie gauche de type 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' (ou il n'existe pas de conversion acceptable) D:\Qt\5.9.1\msvc2015_64\include\QtCore/qpoint.h(358): note: est peut-ˆtre 'const QPointF operator +(const QPointF &,const QPointF &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qpoint.h(169): note: ou 'const QPoint operator +(const QPoint &,const QPoint &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstringlist.h(231): note: ou 'QStringList operator +(const QList<QString> &,const QStringList &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1750): note: ou 'QString operator +(QChar,const QStringRef &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1748): note: ou 'QString operator +(const QStringRef &,QChar)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1746): note: ou 'QString operator +(const QStringRef &,const QStringRef &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1744): note: ou 'QString operator +(QLatin1String,const QStringRef &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1742): note: ou 'QString operator +(const QStringRef &,QLatin1String)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1740): note: ou 'QString operator +(const QStringRef &,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1738): note: ou 'QString operator +(const QString &,const QStringRef &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1313): note: ou 'const QString operator +(const QString &,const QByteArray &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1311): note: ou 'const QString operator +(const QByteArray &,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1309): note: ou 'const QString operator +(const QString &,char)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1307): note: ou 'const QString operator +(char,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1305): note: ou 'const QString operator +(const char *,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1303): note: ou 'const QString operator +(const QString &,const char *)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1300): note: ou 'const QString operator +(QChar,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1298): note: ou 'const QString operator +(const QString &,QChar)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1296): note: ou 'const QString operator +(const QString &,const QString &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(639): note: ou 'const QByteArray operator +(char,const QByteArray &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(637): note: ou 'const QByteArray operator +(const char *,const QByteArray &)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(635): note: ou 'const QByteArray operator +(const QByteArray &,char)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(633): note: ou 'const QByteArray operator +(const QByteArray &,const char *)' D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(631): note: ou 'const QByteArray operator +(const QByteArray &,const QByteArray &)' ..\seqanwinqt\seqan/basic/debug_test_system.h(787): note: lors de la tentative de mise en correspondance de la liste des arguments '(std::basic_string<char,std::char_traits<char>,std::allocator<char>>, WCHAR [260])' ..\seqanwinqt\seqan/basic/debug_test_system.h(788): error C2664: 'int strcmp(const char *,const char *)'ÿ: impossible de convertir l'argument 1 de 'WCHAR [260]' en 'const char *' ..\seqanwinqt\seqan/basic/debug_test_system.h(788): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(790): error C2664: 'BOOL DeleteFileW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(790): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/debug_test_system.h(796): error C2664: 'BOOL RemoveDirectoryW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR' ..\seqanwinqt\seqan/basic/debug_test_system.h(796): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction ..\seqanwinqt\seqan/basic/alphabet_math.h(227): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max' ..\seqanwinqt\seqan/basic/alphabet_math.h(235): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max' ..\seqanwinqt\seqan/basic/alphabet_math.h(255): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min' ..\seqanwinqt\seqan/basic/alphabet_math.h(263): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min' ..\seqanwinqt\seqan/basic/alphabet_adapt_builtins.h(178): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max' ..\seqanwinqt\seqan/basic/alphabet_adapt_builtins.h(215): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(297): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): error C2059: erreur de syntaxeÿ: ')' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): note: voir la r‚f‚rence … l'instanciation de la classe modŠle 'std::numeric_limits<seqan::SimpleType<TValue,TSpec>>' en cours de compilation ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): error C2334: jetons inattendus avant ':'ÿ; corps apparent de la fonction ignor‚ ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2143: erreur de syntaxeÿ: absence de ')' avant ';' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2059: erreur de syntaxeÿ: ')' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2238: jetons inattendus avant ';' ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): fatal error C1201: impossible de continuer aprŠs une erreur de syntaxe dans la d‚finition du modŠle de classe jom: C:\Users\home\Documents\build-seqanwinqt-Desktop_Qt_5_9_1_MSVC2015_64bit-Release\Makefile.Release [release\main.obj] Error 2 jom: C:\Users\home\Documents\build-seqanwinqt-Desktop_Qt_5_9_1_MSVC2015_64bit-Release\Makefile [release] Error 2 20:55:07: The process "D:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2. Error while building/deploying project seqanwinqt (kit: Desktop Qt 5.9.1 MSVC2015 64bit) The kit Desktop Qt 5.9.1 MSVC2015 64bit has configuration issues which might be the root cause for this problem. When executing step "Make"
-
Are you sure that those compilers do support C++14?
Gut feeling for MSVC2015, I would expect that MS is not fast enough to have the support for C++14 already in this version. You may want to check.
For MinGW 5.3 I believe that there is already the C++14 support. However, it looks like you have a collision of headers from MinGW and your header library. Possibly with a differenet MinGW compiler (newer version) you can resolve the problem.
AFAIK Qt sticks fairly long with older MinGW version, because of potential incompatibility reasons.
End of last year I have compiled Qt myself using MinGW 7.0.2 (32bit) and MinGW 7.2.0 (64bit). This worked out for me. I have compiled my applications and they worked apparently flawless. The source used has been Qt 5.9.2.
Hope that helps
-