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
    #5

    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 1 Reply Last reply
    0
    • 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