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/seqanwinqt

    bellow 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"
    

  • Moderators

    @dridk2

    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



  • @koahnig Thanks for your reply.
    Does it mean I have to compile Qt with the new compiler ?
    I mean : Does my Qt dll library for mingw x works with mingw x+1


  • Qt Champions 2017

    @dridk2 either you compile Qt with a newer compiler yourself, or you use a newer Qt version already compiled with a newer compiler.


  • Moderators

    @dridk2

    To add to @aha_1980 it depends with MinGW you have more chances that there is compatibility between different versions.

    However, personally I would go for a complete compilation also of Qt libs. This just takes out the ambiguities and you know what you have.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.