How to build Qt Share Lib With static runtime on windows?



  • How to build Qt Share Lib With static runtime on windows?


  • Lifetime Qt Champion

    Hi,

    You have to modify the mkspec used for your project.

    However, you first have to rebuild all the libraries you are using to also link to the static run time (which means Qt as well).

    You can't mix both style (nothing to do with Qt).



  • VS 2013 complie QT 5.9.5 src error
    qeglplatformcontext.cpp(975) error C2466 array size can not be zero



  • @SGaist
    VS 2013 complie QT 5.9.5 src error
    qeglplatformcontext.cpp(975) error C2466 array size can not be zero

    configure -prefix e:\Qt5.9.5 -opengl desktop -IE:\ICU\include -IE:\OpenSSL\include -LE:\OpenSSL\lib -LE:\ICU\lib -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -qt-sqlite -ssl -openssl-linked -opensource -confirm-license -nomake examples -nomake tests

    ICU and OPENSSL IS CONFIGURE OK

    qtbase\mkspecs\common\msvc-desktop.conf

    #
    # This file is used as a basis for the following compilers:
    #
    # - Microsoft C/C++ Optimizing Compiler (all desktop versions)
    # - Intel C++ Compiler on Windows
    # - Clang-cl
    #
    # Baseline:
    #
    # - Visual Studio 2005 (8.0), VC++ 14.0
    #
    # Version-specific settings go in msvc-version.conf (loaded by default_pre)
    #
    
    MAKEFILE_GENERATOR      = MSVC.NET
    QMAKE_PLATFORM          = win32
    QMAKE_COMPILER          = msvc
    CONFIG                 += flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe
    DEFINES                += UNICODE _UNICODE WIN32
    QMAKE_COMPILER_DEFINES += _WIN32
    contains(QMAKE_TARGET.arch, x86_64) {
        DEFINES += WIN64
        QMAKE_COMPILER_DEFINES += _WIN64
    }
    
    QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Od
    QMAKE_CFLAGS_OPTIMIZE      = -O2
    QMAKE_CFLAGS_OPTIMIZE_SIZE = -O1
    
    QMAKE_CC                = cl
    QMAKE_LEX               = flex
    QMAKE_LEXFLAGS          =
    QMAKE_YACC              = bison -y
    QMAKE_YACCFLAGS         = -d
    QMAKE_CFLAGS            = -nologo -Zc:wchar_t
    QMAKE_CFLAGS_WARN_ON    = -W3
    QMAKE_CFLAGS_WARN_OFF   = -W0
    QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MT
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
    QMAKE_CFLAGS_DEBUG      = -Zi -MTd
    QMAKE_CFLAGS_YACC       =
    QMAKE_CFLAGS_LTCG       = -GL
    
    contains(QMAKE_TARGET.arch, x86_64) {
        # SSE2 is mandatory on 64-bit mode, so skip the option. It triggers:
        # cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2'
        QMAKE_CFLAGS_SSE2   =
    } else {
        QMAKE_CFLAGS_SSE2   = -arch:SSE2
    }
    QMAKE_CFLAGS_SSE3       = $$QMAKE_CFLAGS_SSE2
    QMAKE_CFLAGS_SSSE3      = $$QMAKE_CFLAGS_SSE2
    QMAKE_CFLAGS_SSE4_1     = $$QMAKE_CFLAGS_SSE2
    QMAKE_CFLAGS_SSE4_2     = $$QMAKE_CFLAGS_SSE2
    
    QMAKE_CXX               = $$QMAKE_CC
    QMAKE_CXXFLAGS          = $$QMAKE_CFLAGS
    QMAKE_CXXFLAGS_WARN_ON  = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189 -w44996
    QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
    QMAKE_CXXFLAGS_RELEASE  = $$QMAKE_CFLAGS_RELEASE
    QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
    QMAKE_CXXFLAGS_DEBUG    = $$QMAKE_CFLAGS_DEBUG
    QMAKE_CXXFLAGS_YACC     = $$QMAKE_CFLAGS_YACC
    QMAKE_CXXFLAGS_LTCG     = $$QMAKE_CFLAGS_LTCG
    QMAKE_CXXFLAGS_STL_ON   = -EHsc
    QMAKE_CXXFLAGS_STL_OFF  =
    QMAKE_CXXFLAGS_RTTI_ON  = -GR
    QMAKE_CXXFLAGS_RTTI_OFF =
    QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc
    QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
    
    QMAKE_INCDIR            =
    
    QMAKE_RUN_CC            = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
    QMAKE_RUN_CC_IMP        = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
    QMAKE_RUN_CC_IMP_BATCH  = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
    QMAKE_RUN_CXX           = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
    QMAKE_RUN_CXX_IMP       = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
    QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
    
    QMAKE_LINK              = link
    QMAKE_LFLAGS            = /NOLOGO /DYNAMICBASE /NXCOMPAT icudt.lib icuin.lib icuio.lib icule.lib iculx.lib icutu.lib icuuc.lib
    QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO icudt.lib icuin.lib icuio.lib icule.lib iculx.lib icutu.lib icuuc.lib
    QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO
    QMAKE_LFLAGS_DEBUG      = /DEBUG
    QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:CONSOLE
    QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWS
    QMAKE_LFLAGS_EXE        = \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
    QMAKE_LFLAGS_DLL        = /DLL
    QMAKE_LFLAGS_LTCG       = /LTCG
    QMAKE_PREFIX_SHLIB      =
    QMAKE_EXTENSION_SHLIB   = dll
    QMAKE_PREFIX_STATICLIB  =
    QMAKE_EXTENSION_STATICLIB = lib
    
    QMAKE_LIBS              =
    QMAKE_LIBS_GUI          = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib ws2_32.lib ole32.lib uuid.lib user32.lib advapi32.lib
    QMAKE_LIBS_NETWORK      = ws2_32.lib
    QMAKE_LIBS_OPENGL       = glu32.lib opengl32.lib gdi32.lib user32.lib
    QMAKE_LIBS_OPENGL_ES2   = gdi32.lib user32.lib
    QMAKE_LIBS_OPENGL_ES2_DEBUG = gdi32.lib user32.lib
    QMAKE_LIBS_COMPAT       = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
    QMAKE_LIBS_QT_ENTRY     = -lqtmain
    
    QMAKE_IDL               = midl /NOLOGO
    QMAKE_LIB               = lib /NOLOGO
    QMAKE_RC                = rc /NOLOGO
    
    VCPROJ_EXTENSION        = .vcproj
    VCSOLUTION_EXTENSION    = .sln
    VCPROJ_KEYWORD          = Qt4VSv1.0
    
    include(angle.conf)
    
    

  • Lifetime Qt Champion

    Are you tied to VS2013 ?



  • @SGaist
    YES
    I tried build with vs2013


  • Qt Champions 2018

    @JohnDaYe tied not tried :-)
    The question was: do you have to use this old VS2013? Or could you upgrade to a newer version?



  • @jsulm i build vs2017 ok
    but we need vs2013 ver


  • Lifetime Qt Champion

    Just in case, can you try to build the latest version of the 5.9 series ? It's 5.9.7.



  • @SGaist I Will try it
    thanks



  • @SGaist
    it is will occurs when i configure with "-opengl desktop"


  • Lifetime Qt Champion

    Same file as before ?



  • @SGaist Yes


  • Lifetime Qt Champion

    @JohnDaYe said in How to build Qt Share Lib With static runtime on windows?:

    qeglplatformcontext.cpp

    Any chance that you have neither QT_OPENGL_ES_XXX macro defined ?


Log in to reply
 

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