Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. How to build wxWidgetsets project using Qt Creator?

How to build wxWidgetsets project using Qt Creator?

Scheduled Pinned Locked Moved Solved Qt Creator and other tools
15 Posts 3 Posters 2.1k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Kobid
    wrote on last edited by Kobid
    #6

    For example, in Visual Studio Code this is how I'm preparing tasks.json which is responsible for building my wxWidgetsets project using g++ and it simply works and even debugging works in this IDE, I don't need to link anything, wx-config is the last argument:

    {
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++ kompiluj aktywny plik",
                "command": "/usr/bin/g++",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${fileDirname}/**.cpp",
                    "-o",
                    "${fileDirname}/${fileBasenameNoExtension}",
                    "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config",
                    "--cflags",
                    "--libs`"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "Zadanie wygenerowane przez debuger."
            }
        ],
        "version": "2.0.0"
    }
    
    1 Reply Last reply
    0
    • K Kobid

      Yes, all -L comes from wx-config shell, I think I don't need do this by my self, I mean I didn't have to in CodeBlocks, CodeLite and Visual Studio Code. I think problem is with args order. When I change this (this is how Qt Creator pass it to gcc) from:

      /bin/g++ -DQT_QML_DEBUG `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs` -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2
      

      to (I change it in console of course):

      /bin/g++ -DQT_QML_DEBUG -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2 `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`
      

      then my project is compiling fine

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #7

      @Kobid
      If you want to figure out why the order of arguments matters, we could understand the command line better if we knew what the

      `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`
      

      is returning, so we can compare the two actual, full command lines are, and hence how their behaviour differs.

      I don't know how, but there is probably a way to get qmake or cmake alter what order arguments are passed. It's a bit tricky as obviously you have a single "token" returning some mixture of arguments.

      Btw, do you need the --cflags argument to wx-config when you are producing the arguments for just the linker?

      1 Reply Last reply
      0
      • K Offline
        K Offline
        Kobid
        wrote on last edited by
        #8

        Ahh, sorry, you are right, this is what it is returning:

        -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
        -L/home/dibo/programowanie/wxWidgetsInstallGTK/lib -pthread   /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_xrc-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_qa-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_net-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_html-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_core-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_xml-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu-3.2.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lxkbcommon -lgtk-3 -lgdk-3 -lpangocairo-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lXtst -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -lwxscintilla-3.2 -lexpat -lpcre2-32 -lpng -ljpeg -ltiff -ljbig -lz -lm
        
        JonBJ 1 Reply Last reply
        0
        • K Kobid

          Ahh, sorry, you are right, this is what it is returning:

          -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
          -L/home/dibo/programowanie/wxWidgetsInstallGTK/lib -pthread   /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_xrc-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_qa-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_net-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_html-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_core-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_xml-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu-3.2.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lxkbcommon -lgtk-3 -lgdk-3 -lpangocairo-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lXtst -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -lwxscintilla-3.2 -lexpat -lpcre2-32 -lpng -ljpeg -ltiff -ljbig -lz -lm
          
          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #9

          @Kobid
          You have

          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`")
          

          Those are intended to be C++ flags (compiler) and would naturally come early on the command line. I think you want the linker library flags to go into qmake's LIBS or target_link_libraries() for cmake, as @Christian-Ehrlicher said earlier. That would be placed at the end of the linker command line. I know nothing about this, but maybe --cflags only should be used to construct CMAKE_CXX_FLAGS while --libs only should be used to construct LIBS/target_link_libraries()?

          1 Reply Last reply
          1
          • K Offline
            K Offline
            Kobid
            wrote on last edited by
            #10

            I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

            JonBJ 1 Reply Last reply
            0
            • K Offline
              K Offline
              Kobid
              wrote on last edited by Kobid
              #11

              But maybe there is some nasty workaround? For example in Visual Studio Code I also did a trick, I could not set this as one argument:

              "args": [
                              "-fdiagnostics-color=always",
                              "-g",
                              "${fileDirname}/**.cpp",
                              //"${file}",
                              "-o",
                              "${fileDirname}/${fileBasenameNoExtension}",
                              "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`",
                          ],
              

              That is because if VS detect space in JSON argument, it pass to gcc as quoted argument. That is why I splitted it to:

              "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config",
                             "--cflags",
                             "--libs`"
              
              1 Reply Last reply
              0
              • K Kobid

                I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by JonB
                #12

                @Kobid said in How to build wxWidgetsets project using Qt Creator?:

                I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

                I don't understand. If you can run a command from cmake/qmake to what goes in CMAKE_CXX_FLAGS why can't you do so for LIBS or target_link_libraries() in the same way? Instead of you saying you have to paste in manually. Oh, you mean just doing that has to be across many makefiles? For all I know there might eb a global way. You could wait to see if someone else replies.

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  Kobid
                  wrote on last edited by Kobid
                  #13

                  Woooow!! I always thought that LIBS expect path to existing file etc. I didn't expect that it will accept shell command. I added this:

                  LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                  

                  And everything is working! App is building and running. Amazing, I can use now my favourite IDE. Thank you guys!!
                  This is my finall .pro file. I must check if I can do same in CMake because I don't know yet which build system I will use:

                  TEMPLATE = app
                  CONFIG += c++17
                  CONFIG -= app_bundle
                  CONFIG -= qt
                  
                  QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                  
                  SOURCES += \
                          SimpleBackupApp.cpp \
                          SimpleBackupMain.cpp \
                          ZipProcess.cpp
                  
                  DISTFILES += \
                      SimpleBackupWx.pro.user
                  
                  HEADERS += \
                      SimpleBackupApp.h \
                      SimpleBackupMain.h \
                      ZipProcess.h
                  
                  INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2
                  INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2
                  
                  LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                  

                  But don't know why editor is still showing errors and don't recognize some wx classes and overloaded constructors. INCLUDEPATH is responsible for code completion or I must set paths to WX stricte in Qt Creator settings?
                  f32f74d2-54bb-4dc4-9b7a-9c44a07dce89-obraz.png

                  JonBJ 1 Reply Last reply
                  0
                  • K Kobid

                    Woooow!! I always thought that LIBS expect path to existing file etc. I didn't expect that it will accept shell command. I added this:

                    LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                    

                    And everything is working! App is building and running. Amazing, I can use now my favourite IDE. Thank you guys!!
                    This is my finall .pro file. I must check if I can do same in CMake because I don't know yet which build system I will use:

                    TEMPLATE = app
                    CONFIG += c++17
                    CONFIG -= app_bundle
                    CONFIG -= qt
                    
                    QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                    
                    SOURCES += \
                            SimpleBackupApp.cpp \
                            SimpleBackupMain.cpp \
                            ZipProcess.cpp
                    
                    DISTFILES += \
                        SimpleBackupWx.pro.user
                    
                    HEADERS += \
                        SimpleBackupApp.h \
                        SimpleBackupMain.h \
                        ZipProcess.h
                    
                    INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2
                    INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2
                    
                    LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                    

                    But don't know why editor is still showing errors and don't recognize some wx classes and overloaded constructors. INCLUDEPATH is responsible for code completion or I must set paths to WX stricte in Qt Creator settings?
                    f32f74d2-54bb-4dc4-9b7a-9c44a07dce89-obraz.png

                    JonBJ Offline
                    JonBJ Offline
                    JonB
                    wrote on last edited by
                    #14

                    @Kobid
                    You can right-click on an orange-underlined function and select something like "Go to definition" or "declaration". See what is there and whether it's the path to the included file you expected.

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      Kobid
                      wrote on last edited by Kobid
                      #15

                      Ok. Finally solved everything. Checked compiler output and wx-config shell execution doesn't work in case of QMAKE_CXXFLAGS like it works in LIBS. So I changed this:

                      QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                      

                      To what this command exactly return:

                      QMAKE_CXXFLAGS += -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
                      

                      And now everything works perfectly, even code completion. Important -D__WXGTK__ was missed because gcc was called without what wx-config return

                      1 Reply Last reply
                      0
                      • K Kobid has marked this topic as solved on

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved